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