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)