authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-06 11:47:35+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-15 19:29:56+02:00
log3550cacd73b40cea5cfe3d9613bb4f80b5d42417
treef65df9bbab2b6a143a846e16036b43b84c1b4ec9
parentd289dba125c128bf03309957fee948fba32b8852
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

llvm: Fix compiler crash when lowering f16 for riscv32 ilp32.


1 files changed, 0 insertions(+), 20 deletions(-)

src/codegen/llvm.zig-20
......@@ -1687,12 +1687,6 @@ pub const Object = struct {
16871687 else
16881688 try wip.load(.normal, param_llvm_ty, arg_ptr, param_alignment, ""));
16891689 },
1690 .as_u16 => {
1691 assert(!it.byval_attr);
1692 const param = wip.arg(llvm_arg_i);
1693 llvm_arg_i += 1;
1694 args.appendAssumeCapacity(try wip.cast(.bitcast, param, .half, ""));
1695 },
16961690 .float_array => {
16971691 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
16981692 const param_llvm_ty = try o.lowerType(param_ty);
......@@ -3095,7 +3089,6 @@ pub const Object = struct {
30953089 .no_bits,
30963090 .abi_sized_int,
30973091 .multiple_llvm_types,
3098 .as_u16,
30993092 .float_array,
31003093 .i32_array,
31013094 .i64_array,
......@@ -3770,9 +3763,6 @@ pub const Object = struct {
37703763 .multiple_llvm_types => {
37713764 try llvm_params.appendSlice(o.gpa, it.types_buffer[0..it.types_len]);
37723765 },
3773 .as_u16 => {
3774 try llvm_params.append(o.gpa, .i16);
3775 },
37763766 .float_array => |count| {
37773767 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
37783768 const float_ty = try o.lowerType(aarch64_c_abi.getFloatArrayType(param_ty, zcu).?);
......@@ -5587,12 +5577,6 @@ pub const FuncGen = struct {
55875577 llvm_args.appendAssumeCapacity(loaded);
55885578 }
55895579 },
5590 .as_u16 => {
5591 const arg = args[it.zig_index - 1];
5592 const llvm_arg = try self.resolveInst(arg);
5593 const casted = try self.wip.cast(.bitcast, llvm_arg, .i16, "");
5594 try llvm_args.append(casted);
5595 },
55965580 .float_array => |count| {
55975581 const arg = args[it.zig_index - 1];
55985582 const arg_ty = self.typeOf(arg);
......@@ -5654,7 +5638,6 @@ pub const FuncGen = struct {
56545638 .no_bits,
56555639 .abi_sized_int,
56565640 .multiple_llvm_types,
5657 .as_u16,
56585641 .float_array,
56595642 .i32_array,
56605643 .i64_array,
......@@ -11968,7 +11951,6 @@ const ParamTypeIterator = struct {
1196811951 abi_sized_int,
1196911952 multiple_llvm_types,
1197011953 slice,
11971 as_u16,
1197211954 float_array: u8,
1197311955 i32_array: u8,
1197411956 i64_array: u8,
......@@ -12090,8 +12072,6 @@ const ParamTypeIterator = struct {
1209012072 .riscv32, .riscv64 => {
1209112073 it.zig_index += 1;
1209212074 it.llvm_index += 1;
12093 if (ty.toIntern() == .f16_type and
12094 !std.Target.riscv.featureSetHas(target.cpu.features, .d)) return .as_u16;
1209512075 switch (riscv_c_abi.classifyType(ty, zcu)) {
1209612076 .memory => return .byref_mut,
1209712077 .byval => return .byval,