method vexpr (e:exp) =
let extra = (!extraUsesOfExpr) e in
if not (VS.is_empty extra) then
varUsed := VS.union extra !varUsed;
match e.enode with
Lval (Var v, off) ->
ignore (visitCilOffset (self :> cilVisitor) off);
if (!considerVariableUse) v then
varUsed := VS.add v !varUsed;
SkipChildren
| AddrOf (Var v, off)
| StartOf (Var v, off) ->
ignore (visitCilOffset (self :> cilVisitor) off);
if (!considerVariableAddrOfAsUse) v then
varUsed := VS.add v !varUsed;
SkipChildren
| SizeOfE _
| AlignOfE _ when !ignoreSizeof -> SkipChildren
| _ -> DoChildren