| ... | ... | @@ -186975,13 +186975,7 @@ const Temp = struct { |
| 186975 | 186975 | }, |
| 186976 | 186976 | .struct_type => { |
| 186977 | 186977 | assert(src_regs.len - part_index == std.math.divCeil(u32, src_abi_size, 8) catch unreachable); |
| 186978 | | break :part_ty switch (src_abi_size) { |
| 186979 | | 0, 3, 5...7 => unreachable, |
| 186980 | | 1 => .u8, |
| 186981 | | 2 => .u16, |
| 186982 | | 4 => .u32, |
| 186983 | | else => .u64, |
| 186984 | | }; |
| 186978 | break :part_ty .u64; |
| 186985 | 186979 | }, |
| 186986 | 186980 | .tuple_type => |tuple_type| { |
| 186987 | 186981 | assert(tuple_type.types.len == src_regs.len); |
| ... | ... | @@ -186990,6 +186984,10 @@ const Temp = struct { |
| 186990 | 186984 | }; |
| 186991 | 186985 | const part_size: u31 = @intCast(part_ty.abiSize(zcu)); |
| 186992 | 186986 | const src_rc = src_reg.class(); |
| 186987 | const part_bit_size = switch (src_rc) { |
| 186988 | else => 8 * part_size, |
| 186989 | .x87 => part_ty.bitSize(zcu), |
| 186990 | }; |
| 186993 | 186991 | if (src_rc == .x87 or std.math.isPowerOfTwo(part_size)) { |
| 186994 | 186992 | // hack around linker relocation bugs |
| 186995 | 186993 | switch (ptr.tracking(cg).short) { |
| ... | ... | @@ -186998,15 +186996,7 @@ const Temp = struct { |
| 186998 | 186996 | } |
| 186999 | 186997 | const strat = try cg.moveStrategy(part_ty, src_rc, false); |
| 187000 | 186998 | try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{ |
| 187001 | | .size = switch (src_rc) { |
| 187002 | | else => .fromBitSize(8 * part_size), |
| 187003 | | .x87 => switch (abi.classifySystemV(src_ty, zcu, cg.target, .other)[part_index]) { |
| 187004 | | else => unreachable, |
| 187005 | | .float => .dword, |
| 187006 | | .float_combine, .sse => .qword, |
| 187007 | | .x87 => .tbyte, |
| 187008 | | }, |
| 187009 | | }, |
| 186999 | .size = .fromBitSize(part_bit_size), |
| 187010 | 187000 | .disp = part_disp, |
| 187011 | 187001 | }), registerAlias(src_reg, part_size)); |
| 187012 | 187002 | } else { |