'Low-level allocate a new memory area of `size` bytes.'

def allocate(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_Allocate')
    fn.return_value.add_attribute('noalias')
    return builder.call(fn, [size])
