method vinst i =
if Value.is_reachable (Value.get_state self#current_kinstr) then begin
match i with
| Set (lv,exp,_) ->
self#do_assign lv;
ignore (visitFramacExpr (self:>frama_c_visitor) exp);
Cil.SkipChildren
| Call (lv_opt,exp,args,_) ->
(match lv_opt with None -> ()
| Some lv -> self#do_assign lv);
let deps_callees, callees =
!Value.expr_to_kernel_function
~with_alarms:CilE.warn_none_mode
~deps:(Some Zone.bottom)
self#current_kinstr exp
in
self#join deps_callees;
Kernel_function.Hptset.iter
(fun kf -> self#join (!Db.Inputs.get_external kf))
callees;
List.iter
(fun exp -> ignore (visitFramacExpr (self:>frama_c_visitor) exp))
args;
Cil.SkipChildren
| _ -> Cil.DoChildren
end
else Cil.SkipChildren