aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Cutil.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/Cutil.ml
parent774977824161f43104f1d31123a0e082395f0fe1 (diff)
downloadcompcert-kvx-15fc340f69e9c4d718c15fd9ec12a81695cf8d67.tar.gz
compcert-kvx-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/Cutil.ml')
-rw-r--r--cparser/Cutil.ml7
1 files changed, 6 insertions, 1 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml
index 94e3e85d..c82ada26 100644
--- a/cparser/Cutil.ml
+++ b/cparser/Cutil.ml
@@ -552,7 +552,12 @@ let struct_layout env members =
(* Determine whether a type is incomplete *)
let incomplete_type env t =
- match sizeof env t with None -> true | Some _ -> false
+ match unroll env t with
+ | TVoid _ -> true (* Void is always incomplete *)
+ | _ -> begin match sizeof env t with
+ | None -> true
+ | Some _ -> false
+ end
(* Computing composite_info records *)