authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-09-21 21:42:39+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-09-21 21:42:39+02:00
logd07b67a55cba683c7adb73f5e2f7b1bec803a361
treecc59bbe730929c9ae024fe163a2a83c1c0a163bd
parente647d1a5704d3cd66141e641d775091bf0bd8e9d
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Revert "x86_64: fix safety crashes in `storeRegs`"

This reverts commit 37985613c760d1d20a1fbba292fd5c25129f400a.

1 files changed, 6 insertions(+), 16 deletions(-)

src/arch/x86_64/CodeGen.zig+6-16
......@@ -186975,13 +186975,7 @@ const Temp = struct {
186975186975 },
186976186976 .struct_type => {
186977186977 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;
186985186979 },
186986186980 .tuple_type => |tuple_type| {
186987186981 assert(tuple_type.types.len == src_regs.len);
......@@ -186990,6 +186984,10 @@ const Temp = struct {
186990186984 };
186991186985 const part_size: u31 = @intCast(part_ty.abiSize(zcu));
186992186986 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 };
186993186991 if (src_rc == .x87 or std.math.isPowerOfTwo(part_size)) {
186994186992 // hack around linker relocation bugs
186995186993 switch (ptr.tracking(cg).short) {
......@@ -186998,15 +186996,7 @@ const Temp = struct {
186998186996 }
186999186997 const strat = try cg.moveStrategy(part_ty, src_rc, false);
187000186998 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),
187010187000 .disp = part_disp,
187011187001 }), registerAlias(src_reg, part_size));
187012187002 } else {