authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-07-01 22:04:06-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-07-01 22:04:06-07:00
logafc5edabe05d464f64388726238d46b400c3e159
tree85a98a3171f4d6a03be96ada639224ca565193ec
parent309aacfc8993ff4ec5914a7ee2c487eabbe00998
parenta1b583dc24cde495656b288de979714dfc15c4a2
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #16287 from Snektron/amdgpu-panic-fix

Some amdgcn fixes

3 files changed, 12 insertions(+), 5 deletions(-)

lib/std/builtin.zig+1-1
...@@ -807,7 +807,7 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr...@@ -807,7 +807,7 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr
807 // Didn't have boot_services, just fallback to whatever.807 // Didn't have boot_services, just fallback to whatever.
808 std.os.abort();808 std.os.abort();
809 },809 },
810 .cuda => std.os.abort(),810 .cuda, .amdhsa => std.os.abort(),
811 else => {811 else => {
812 const first_trace_addr = ret_addr orelse @returnAddress();812 const first_trace_addr = ret_addr orelse @returnAddress();
813 std.debug.panicImpl(error_return_trace, first_trace_addr, msg);813 std.debug.panicImpl(error_return_trace, first_trace_addr, msg);
lib/std/os.zig+1-1
...@@ -613,7 +613,7 @@ pub fn abort() noreturn {...@@ -613,7 +613,7 @@ pub fn abort() noreturn {
613 exit(127); // Pid 1 might not be signalled in some containers.613 exit(127); // Pid 1 might not be signalled in some containers.
614 }614 }
615 switch (builtin.os.tag) {615 switch (builtin.os.tag) {
616 .uefi, .wasi, .cuda => @trap(),616 .uefi, .wasi, .cuda, .amdhsa => @trap(),
617 else => system.abort(),617 else => system.abort(),
618 }618 }
619}619}
src/codegen/llvm.zig+10-3
...@@ -2435,18 +2435,25 @@ pub const Object = struct {...@@ -2435,18 +2435,25 @@ pub const Object = struct {
2435 .ty = ty.toType(),2435 .ty = ty.toType(),
2436 .val = null_opt_usize.toValue(),2436 .val = null_opt_usize.toValue(),
2437 });2437 });
2438 const llvm_wanted_addrspace = toLlvmAddressSpace(.generic, target);
2439 const llvm_actual_addrspace = toLlvmGlobalAddressSpace(.generic, target);
2438 const global = o.llvm_module.addGlobalInAddressSpace(2440 const global = o.llvm_module.addGlobalInAddressSpace(
2439 llvm_init.typeOf(),2441 llvm_init.typeOf(),
2440 "",2442 "",
2441 toLlvmGlobalAddressSpace(.generic, target),2443 llvm_actual_addrspace,
2442 );2444 );
2443 global.setLinkage(.Internal);2445 global.setLinkage(.Internal);
2444 global.setUnnamedAddr(.True);2446 global.setUnnamedAddr(.True);
2445 global.setAlignment(ty.toType().abiAlignment(mod));2447 global.setAlignment(ty.toType().abiAlignment(mod));
2446 global.setInitializer(llvm_init);2448 global.setInitializer(llvm_init);
24472449
2448 o.null_opt_addr = global;2450 const addrspace_casted_global = if (llvm_wanted_addrspace != llvm_actual_addrspace)
2449 return global;2451 global.constAddrSpaceCast(o.context.pointerType(llvm_wanted_addrspace))
2452 else
2453 global;
2454
2455 o.null_opt_addr = addrspace_casted_global;
2456 return addrspace_casted_global;
2450 }2457 }
24512458
2452 /// If the llvm function does not exist, create it.2459 /// If the llvm function does not exist, create it.