You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let res =try (query e @@Cilfacade.get_ikind_exp e) withInvalid_argument_ -> raise (Unsupported_CilExpExp_not_supported) in
176
-
(* convert response to a constant *)
177
-
let const =IntDomain.IntDomTuple.to_int @@IntDomain.IntDomTuple.cast_to t_ik res in
173
+
(* retrieving a valuerange for a non-injective cast works by a query to the value-domain with subsequent value extraction from domtuple - which should be speculative, since it is not program code *)
174
+
let const,res =GobRef.wrap AnalysisState.executing_speculative_computations true@@fun() ->
175
+
(* try to evaluate e by EvalInt Query *)
176
+
let res =try (query e @@Cilfacade.get_ikind_exp e) withInvalid_argument_ -> raise (Unsupported_CilExpExp_not_supported) in
177
+
(* convert response to a constant *)
178
+
IntDomain.IntDomTuple.to_int @@IntDomain.IntDomTuple.cast_to t_ik res, res in
178
179
match const with
179
180
|Somec -> Cst (Coeff.s_of_z c) (* Got a constant value -> use it straight away *)
180
181
(* I gotten top, we can not guarantee injectivity *)
0 commit comments