method vinst = function
    | Set((Var v,NoOffset),e,_loc) ->
        if candidate_var v then
          begin
            add_assigned_vars v;
            match destruct_integer 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;
        SkipChildren
    | Set _ -> SkipChildren
    | Call(Some(Var v,NoOffset),_f,_args,_loc) ->
        if candidate_var v then
          begin
            add_assigned_vars v; add_ignore_vars v
          end;
        SkipChildren
    | Call _ -> SkipChildren
    | Asm _ | Skip _ | Code_annot _ -> SkipChildren