'Converts the LLVM struct in `value` into a representation suited for
storing into arrays.
Note
Current implementation rarely changes how types are represented for
"value" and "data".  This is usually a pointless rebuild of the
immutable LLVM struct value.  Luckily, LLVM optimization removes all
redundancy.
Sample usecase: Structures nested with pointers to other structures
that can be serialized into  a flat representation when storing into
array.'

def as_data(self, builder, value):

    elems = self._as('as_data', builder, value)
    struct = ir.Constant(self.get_data_type(), ir.Undefined)
    for (i, el) in enumerate(elems):
        struct = builder.insert_value(struct, el, [i])
    return struct
