| author | |
| committer | |
| log | afc5edabe05d464f64388726238d46b400c3e159 |
| tree | 85a98a3171f4d6a03be96ada639224ca565193ec |
| parent | 309aacfc8993ff4ec5914a7ee2c487eabbe00998 |
| parent | a1b583dc24cde495656b288de979714dfc15c4a2 |
| signature |
Some amdgcn fixes3 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); |
| 2447 | 2449 | ||
| 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 | } |
| 2451 | 2458 | ||
| 2452 | /// If the llvm function does not exist, create it. | 2459 | /// If the llvm function does not exist, create it. |