method vinst i =
if Value.is_reachable (Value.get_state current_stmt) then begin
match i with
| Set (lv,exp,_) ->
self#do_assign lv;
ignore (visitCilExpr (self:>cilVisitor) exp);
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)
current_stmt exp
in
self#join deps_callees;
List.iter
(fun kf -> self#join (!Db.Inputs.get_external kf))
callees;
List.iter
(fun exp -> ignore (visitCilExpr (self:>cilVisitor) exp))
args;
SkipChildren
| _ -> DoChildren
end
else SkipChildren