From 3f08073f7d2f0cd8aa086f1618a74106bf35086d Mon Sep 17 00:00:00 2001 From: Matthew Lugg Date: Sat, 20 Dec 2025 19:01:43 +0000 Subject: x86_64: hack around more OPV bugs I would just fix this in Sema if it were easy to do so, but this is more like a (minor) AIR data design issue than a straightforward Sema bug. --- src/codegen/x86_64/CodeGen.zig | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/codegen') diff --git a/src/codegen/x86_64/CodeGen.zig b/src/codegen/x86_64/CodeGen.zig index f27b28a3b2..7e8e78334a 100644 --- a/src/codegen/x86_64/CodeGen.zig +++ b/src/codegen/x86_64/CodeGen.zig @@ -171444,12 +171444,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { const elem_dies = bt.feed(); if (tuple_type.values.get(ip)[field_index] != .none) continue; const field_type = Type.fromInterned(tuple_type.types.get(ip)[field_index]); - elem_disp = @intCast(field_type.abiAlignment(zcu).forward(elem_disp)); - var elem = try cg.tempFromOperand(elem_ref, elem_dies); - try res.write(&elem, .{ .disp = elem_disp }, cg); - try elem.die(cg); - try cg.resetTemps(reset_index); - elem_disp += @intCast(field_type.abiSize(zcu)); + if (!hack_around_sema_opv_bugs or field_type.hasRuntimeBitsIgnoreComptime(zcu)) { + elem_disp = @intCast(field_type.abiAlignment(zcu).forward(elem_disp)); + var elem = try cg.tempFromOperand(elem_ref, elem_dies); + try res.write(&elem, .{ .disp = elem_disp }, cg); + try elem.die(cg); + try cg.resetTemps(reset_index); + elem_disp += @intCast(field_type.abiSize(zcu)); + } } }, else => return cg.fail("failed to select {s} {f}", .{ -- cgit v1.2.3