commit afc5edabe05d464f64388726238d46b400c3e159 (tree)
parent 309aacfc8993ff4ec5914a7ee2c487eabbe00998
Author: Andrew Kelley <andrew@ziglang.org>
Date: Sat, 1 Jul 2023 22:04:06 -0700
Merge pull request #16287 from Snektron/amdgpu-panic-fix
Some amdgcn fixes
Diffstat:
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
@@ -807,7 +807,7 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr
// Didn't have boot_services, just fallback to whatever.
std.os.abort();
},
- .cuda => std.os.abort(),
+ .cuda, .amdhsa => std.os.abort(),
else => {
const first_trace_addr = ret_addr orelse @returnAddress();
std.debug.panicImpl(error_return_trace, first_trace_addr, msg);
diff --git a/lib/std/os.zig b/lib/std/os.zig
@@ -613,7 +613,7 @@ pub fn abort() noreturn {
exit(127); // Pid 1 might not be signalled in some containers.
}
switch (builtin.os.tag) {
- .uefi, .wasi, .cuda => @trap(),
+ .uefi, .wasi, .cuda, .amdhsa => @trap(),
else => system.abort(),
}
}
diff --git 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.