commit 3ab845e028f464666856e4eaaeff2e6ab1b3da5d (tree)
parent b4394412bb0f5d2ff0018fb9e868ccf0f46ab911
Author: Andrew Kelley <andrew@ziglang.org>
Date: Wed, 10 Sep 2025 14:56:04 -0700
frontend: another packedStructFieldPtrInfo fix
it was calculating host integer size in a wrong way. just use integer
abi size
Diffstat:
2 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/src/Type.zig b/src/Type.zig
@@ -3545,10 +3545,7 @@ pub fn packedStructFieldPtrInfo(struct_ty: Type, parent_ptr_ty: Type, field_idx:
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,
};
diff --git a/test/behavior/union.zig b/test/behavior/union.zig
@@ -1564,13 +1564,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 };