let load_mem mem te loc =
match te with
| C_pointer ty -> V_pointer(ty,Model.Addr(load_with addr_format mem loc))
| C_int i -> V_int(i,load_with D.int_format mem loc)
| C_float f -> V_float(f,load_with D.real_format mem loc)
| C_comp comp ->
if comp.cstruct then
let fmt = DF.record_format comp in
let z = zrange loc (F.e_int (List.length comp.cfields))in
let d = model_access_range mem z in
V_record(comp,D.decode fmt d)
else Wp_parameters.not_yet_implemented "load of union"
| C_array arr ->
let fmt = DF.array_format arr in
let z = zrange loc (sizeof te) in
let d = model_access_range mem z in
V_array(arr,D.decode fmt d)