aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Cutil.ml
diff options
context:
space:
mode:
Diffstat (limited to 'cparser/Cutil.ml')
-rw-r--r--cparser/Cutil.ml11
1 files changed, 11 insertions, 0 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml
index 124560e5..586b4a92 100644
--- a/cparser/Cutil.ml
+++ b/cparser/Cutil.ml
@@ -642,6 +642,17 @@ let int_representable v nbits sgn =
else
0L <= v && v < Int64.shift_left 1L nbits
+let valid_array_size env ty v =
+ match sizeof env ty with
+ | None -> true (* Incomplete type should be caught later *)
+ | Some sz ->
+ let sz = Int64.of_int sz in
+ let ptr_bits = !Machine.config.sizeof_ptr * 8 - 1 in
+ if sz = 0L || v <= (Int64.div Int64.max_int sz) then
+ int_representable (Int64.mul sz v) ptr_bits true
+ else
+ false
+
(* Type of a function definition *)
let fundef_typ fd =