| author | |
| committer | |
| log | 5b742785100bb2662f6fc0ee11ac84b2fed9be9e |
| tree | 5f92621ee91b0f64f8541faa7393ed6d210aec22 |
| parent | 9d0b8a27b64c23ca42c15160abea0dd12077332e |
3 files changed, 16 insertions(+), 7 deletions(-)
src/codegen.zig+16-4| ... | ... | @@ -684,10 +684,22 @@ fn lowerParentPtr( |
| 684 | 684 | .struct_type, |
| 685 | 685 | .anon_struct_type, |
| 686 | 686 | .union_type, |
| 687 | => @as(u32, @intCast(base_type.toType().structFieldOffset( | |
| 688 | @as(u32, @intCast(field.index)), | |
| 689 | mod, | |
| 690 | ))), | |
| 687 | => switch (base_type.toType().containerLayout(mod)) { | |
| 688 | .Auto, .Extern => @intCast(base_type.toType().structFieldOffset( | |
| 689 | @intCast(field.index), | |
| 690 | mod, | |
| 691 | )), | |
| 692 | .Packed => if (mod.typeToStruct(base_type.toType())) |struct_obj| | |
| 693 | math.divExact(u16, struct_obj.packedFieldBitOffset( | |
| 694 | mod, | |
| 695 | @intCast(field.index), | |
| 696 | ), 8) catch |err| switch (err) { | |
| 697 | error.UnexpectedRemainder => 0, | |
| 698 | error.DivisionByZero => unreachable, | |
| 699 | } | |
| 700 | else | |
| 701 | 0, | |
| 702 | }, | |
| 691 | 703 | else => unreachable, |
| 692 | 704 | }), |
| 693 | 705 | ); |
test/behavior/packed-struct.zig-2| ... | ... | @@ -376,7 +376,6 @@ test "load pointer from packed struct" { |
| 376 | 376 | } |
| 377 | 377 | |
| 378 | 378 | test "@intFromPtr on a packed struct field" { |
| 379 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | |
| 380 | 379 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 381 | 380 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 382 | 381 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -608,7 +607,6 @@ test "pointer to container level packed struct field" { |
| 608 | 607 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 609 | 608 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 610 | 609 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; |
| 611 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | |
| 612 | 610 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 613 | 611 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 614 | 612 |
test/behavior/struct.zig-1| ... | ... | @@ -1077,7 +1077,6 @@ test "packed struct with undefined initializers" { |
| 1077 | 1077 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1078 | 1078 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1079 | 1079 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1080 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 1081 | 1080 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1082 | 1081 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 1083 | 1082 |