'Returns dynamic address as a void pointer `i8*`.
Internally, a global variable is added to inform the lowerer about
the usage of dynamic addresses.  Caching will be disabled.'

def add_dynamic_addr(self, builder, intaddr, info):

    assert self.allow_dynamic_globals, 'dyn    globals    disabled    in    this    target'
    assert isinstance(intaddr, utils.INT_TYPES), 'dyn    addr    not    of    int    type'
    mod = builder.module
    llvoidptr = self.get_value_type(types.voidptr)
    addr = self.get_constant(types.uintp, intaddr).inttoptr(llvoidptr)
    symname = 'numba.dynamic.globals.{:x}'.format(intaddr)
    gv = mod.add_global_variable(llvoidptr, name=symname)
    gv.linkage = 'linkonce'
    gv.initializer = addr
    return builder.load(gv)
