let addr mem l =
match l with
| (Var x,off) ->
let te = x.vtype in
shift_loc mem (M.cvar mem x) te off
| (Mem e,off) ->
let te = Cil.typeOf e in
let tl = Cil.typeOf_pointed te in
let loc = loc_of_value (!expr_rec mem e) in
shift_loc mem loc tl off