Commit 5d8c1fb6ab

Andrew Kelley <andrew@ziglang.org>
2025-09-10 23:56:04
frontend: another packedStructFieldPtrInfo fix
it was calculating host integer size in a wrong way. just use integer abi size
1 parent baaf715
Changed files (2)
src
test
behavior
src/Type.zig
@@ -3540,10 +3540,7 @@ pub fn packedStructFieldPtrInfo(
         parent_ptr_info.packed_offset.host_size,
         parent_ptr_info.packed_offset.bit_offset + bit_offset,
     } else .{
-        switch (zcu.comp.getZigBackend()) {
-            else => (running_bits + 7) / 8,
-            .stage2_x86_64 => @intCast(struct_ty.abiSize(zcu)),
-        },
+        @intCast(struct_ty.abiSize(zcu)),
         bit_offset,
     };
 
test/behavior/union.zig
@@ -1547,13 +1547,9 @@ test "packed union field pointer has correct alignment" {
     const bp = &b.u.x;
     const cp = &c.u.x;
 
-    const host_size = switch (builtin.zig_backend) {
-        else => comptime std.math.divCeil(comptime_int, @bitSizeOf(S), 8) catch unreachable,
-        .stage2_x86_64 => @sizeOf(S),
-    };
-    comptime assert(@TypeOf(ap) == *align(4:2:host_size) u20);
-    comptime assert(@TypeOf(bp) == *align(1:2:host_size) u20);
-    comptime assert(@TypeOf(cp) == *align(64:2:host_size) u20);
+    comptime assert(@TypeOf(ap) == *align(4:2:@sizeOf(S)) u20);
+    comptime assert(@TypeOf(bp) == *align(1:2:@sizeOf(S)) u20);
+    comptime assert(@TypeOf(cp) == *align(64:2:@sizeOf(S)) u20);
 
     a.u = .{ .x = 123 };
     b.u = .{ .x = 456 };