let call_add_pre_and_do_args args formals pre p =
let p = Fol.pands pre p in
try
let one_formal p vi e =
if vi.vname <> "" then
assign (Var vi, NoOffset) e p
else p (* it the parameter has no name, we don't need it ! *)
in
let p = List.fold_left2 one_formal p formals args in
(*
let formals = (List.map Cil.cvar_to_lvar formals) in
let p = separate_variables formals p in
let caller_vars = Globals.Vars.fold (fun vg _ acc -> (Cil.cvar_to_lvar vg)::acc) [] in
let caller_locals = Kernel_function.get_locals kf_caller in
let caller_vars = (List.map Cil.cvar_to_lvar caller_locals)@caller_vars in
let caller_vars = (Macros.result_var kf_caller)::caller_vars in
let caller_formals = Kernel_function.get_formals kf_caller in
let caller_formals = List.map Cil.cvar_to_lvar caller_formals in
let caller_vars = caller_formals@caller_vars in
let p = separate_with_variables formals caller_vars p in
*)
let p = List.fold_right (MV.forall_addr_cvar false) formals p in
p
with Invalid_argument("List.fold_left2") -> raise CallArgsVsParamNb