aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Elab.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2016-02-02 08:48:42 +0100
committerBernhard Schommer <bernhardschommer@gmail.com>2016-02-02 08:48:42 +0100
commit15fc340f69e9c4d718c15fd9ec12a81695cf8d67 (patch)
tree24e9472b03f5f6bdeee09f2984d7c23ea39d575a /cparser/Elab.ml
parent774977824161f43104f1d31123a0e082395f0fe1 (diff)
downloadcompcert-15fc340f69e9c4d718c15fd9ec12a81695cf8d67.tar.gz
compcert-15fc340f69e9c4d718c15fd9ec12a81695cf8d67.zip
Make void always incomplete and exit on void members.
Since we cannot construct a default initializer for void types we need to exit earlier. Bug 18004.
Diffstat (limited to 'cparser/Elab.ml')
-rw-r--r--cparser/Elab.ml3
1 files changed, 2 insertions, 1 deletions
diff --git a/cparser/Elab.ml b/cparser/Elab.ml
index aed84a38..d7a1212a 100644
--- a/cparser/Elab.ml
+++ b/cparser/Elab.ml
@@ -706,7 +706,8 @@ and elab_struct_or_union_info kind loc env members attrs =
(* C99: ty[] allowed as last field of a struct *)
| fld :: rem ->
if wrap incomplete_type loc env' fld.fld_typ then
- error loc "member '%s' has incomplete type" fld.fld_name;
+ (* Must be fatal otherwise we get problems constructing the init *)
+ fatal_error loc "member '%s' has incomplete type" fld.fld_name;
check_incomplete rem in
check_incomplete m;
(* Warn for empty structs or unions *)