mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 14:25:16 +00:00
x86_64: fix global pointers to packed struct fields
This commit is contained in:
parent
9d0b8a27b6
commit
5b74278510
@ -684,10 +684,22 @@ fn lowerParentPtr(
|
||||
.struct_type,
|
||||
.anon_struct_type,
|
||||
.union_type,
|
||||
=> @as(u32, @intCast(base_type.toType().structFieldOffset(
|
||||
@as(u32, @intCast(field.index)),
|
||||
mod,
|
||||
))),
|
||||
=> switch (base_type.toType().containerLayout(mod)) {
|
||||
.Auto, .Extern => @intCast(base_type.toType().structFieldOffset(
|
||||
@intCast(field.index),
|
||||
mod,
|
||||
)),
|
||||
.Packed => if (mod.typeToStruct(base_type.toType())) |struct_obj|
|
||||
math.divExact(u16, struct_obj.packedFieldBitOffset(
|
||||
mod,
|
||||
@intCast(field.index),
|
||||
), 8) catch |err| switch (err) {
|
||||
error.UnexpectedRemainder => 0,
|
||||
error.DivisionByZero => unreachable,
|
||||
}
|
||||
else
|
||||
0,
|
||||
},
|
||||
else => unreachable,
|
||||
}),
|
||||
);
|
||||
|
||||
@ -376,7 +376,6 @@ test "load pointer from packed struct" {
|
||||
}
|
||||
|
||||
test "@intFromPtr on a packed struct field" {
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||
@ -608,7 +607,6 @@ test "pointer to container level packed struct field" {
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||
|
||||
|
||||
@ -1077,7 +1077,6 @@ test "packed struct with undefined initializers" {
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user