let compute_call kf ~call_kinstr initial_state actuals =
let with_formals =
actualize_formals kf initial_state actuals
(fun expr formal ->
if bitsSizeOf (typeOf expr) <> bitsSizeOf (formal.vtype)
then raise Eval_stmts.Wrong_function_type)
in
Db.Value.merge_initial_state kf with_formals;
let stack_without_call = for_callbacks_stack () in
Db.Value.Call_Value_Callbacks.apply
(with_formals, ((kf, call_kinstr) :: stack_without_call));
match compute_call_to_builtin kf initial_state actuals with
| Some r -> r
| None ->
compute_call_to_cil_function kf initial_state with_formals call_kinstr