'Allocate a MemInfo pointing to a variable-sized data area.  The area
is separately allocated (i.e. two allocations are made) so that
re-allocating it doesn\'t change the MemInfo\'s address.
A pointer to the MemInfo is returned.'

def meminfo_new_varsize(self, builder, size):

    self._require_nrt()
    mod = builder.module
    fnty = ir.FunctionType(cgutils.voidptr_t, [cgutils.intp_t])
    fn = mod.get_or_insert_function(fnty, name='NRT_MemInfo_new_varsize')
    fn.return_value.add_attribute('noalias')
    return builder.call(fn, [size])
