aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index d42195d7e9..24ff706711 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -2435,18 +2435,25 @@ pub const Object = struct {
.ty = ty.toType(),
.val = null_opt_usize.toValue(),
});
+ const llvm_wanted_addrspace = toLlvmAddressSpace(.generic, target);
+ const llvm_actual_addrspace = toLlvmGlobalAddressSpace(.generic, target);
const global = o.llvm_module.addGlobalInAddressSpace(
llvm_init.typeOf(),
"",
- toLlvmGlobalAddressSpace(.generic, target),
+ llvm_actual_addrspace,
);
global.setLinkage(.Internal);
global.setUnnamedAddr(.True);
global.setAlignment(ty.toType().abiAlignment(mod));
global.setInitializer(llvm_init);
- o.null_opt_addr = global;
- return global;
+ const addrspace_casted_global = if (llvm_wanted_addrspace != llvm_actual_addrspace)
+ global.constAddrSpaceCast(o.context.pointerType(llvm_wanted_addrspace))
+ else
+ global;
+
+ o.null_opt_addr = addrspace_casted_global;
+ return addrspace_casted_global;
}
/// If the llvm function does not exist, create it.