let rec loc_offset env loc ty = function
    | TNoOffset -> loc
    | TField(f,off) ->
        loc_offset env (M.field loc f) (Ctypes.object_of f.ftype) off
    | TIndex(t,off) ->
        let k = integer_of_data (kind_of t.term_type) (!data_rec env t) in
        let te = Ctypes.object_of_array_elem ty in
        loc_offset env (M.index loc te k) te off