let call_post called_kf vs m_pre m_post xopt =
let frame =
M.new_frame called_kf
~m_here:(Some m_post)
~m_pre:(Some m_pre)
~m_post:(Some m_post) xopt in
let xenv1 =
try
List.map2
(fun x v -> x , v)
(Kernel_function.get_formals called_kf) vs
with Invalid_argument _ -> []
(* implicit prototype of callee*)
in
let xenv =
List.fold_right
(fun (x,v) t -> Varinfo.Map.add x v t) xenv1 Varinfo.Map.empty
in
{
formals_in_pre = true ;
frame = frame ;
label = Here ;
lvars = Logic_var.Map.empty ;
xvars = xenv ;
}