method vinst = function
| Set((Var v,NoOffset),e,_loc) ->
if candidate_var v then
begin
add_assigned_vars v;
match destruct_pointer e with
| None -> add_ignore_vars v
| Some(v2,_offset) ->
if VarinfoSet.mem v2 !ignore_vars then add_ignore_vars v
else try
let vb2 = VarinfoHashtbl.find cursor_to_base v2 in
try
let vb = VarinfoHashtbl.find cursor_to_base v in
if not (VarinfoComparable.equal vb vb2) then
add_ignore_vars v
with Not_found -> add_cursor_to_base v vb2
with Not_found -> add_ignore_vars v
end;
DoChildren
| Set _ -> DoChildren
| Call(Some(Var v,NoOffset),_f,_args,_loc) ->
if candidate_var v then
begin
add_assigned_vars v; add_ignore_vars v
end;
DoChildren
| Call _ -> DoChildren
| Asm _ | Skip _ | Code_annot _ -> SkipChildren