diff --git a/src/plugins/wp/CodeSemantics.ml b/src/plugins/wp/CodeSemantics.ml index 80b3fbb8928bcae0edacd44e7435673effdea0ae..754499576a710d7af23fe5e7d5be34492d236bff 100644 --- a/src/plugins/wp/CodeSemantics.ml +++ b/src/plugins/wp/CodeSemantics.ml @@ -455,16 +455,18 @@ struct | Warning.Failed warn -> warn , (F.p_true, F.p_true) | Warning.Result(warn , hyp) -> warn , hyp - let init_range ~sigma lv typ a b value = + let init_range ~sigma lv typ low excl_up value = let obj = Ctypes.object_of typ in let outcome = Warning.catch ~severe:false ~effect:"Skip initializer" (fun () -> let l = lval sigma lv in let e = Extlib.opt_map (exp sigma) value in - let a = e_bigint a and b = e_bigint b in - (is_exp_range sigma l obj a b e), - (M.initialized sigma (Rrange(l, obj, Some a, Some b))) + let low = e_bigint low in + let excl_up = e_bigint excl_up in + let incl_up = e_sub excl_up e_one in + (is_exp_range sigma l obj low excl_up e), + (M.initialized sigma (Rrange(l, obj, Some low, Some incl_up))) ) () in match outcome with | Warning.Failed warn -> warn , (F.p_true, F.p_true)