diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2025-04-03 12:09:07 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-04-05 20:49:56 -0400 |
| commit | 9827ffe1ded884796aafe21cd6f6941f5ac3a279 (patch) | |
| tree | 2a4d390be7beaca88916ef4ac9c5dd34b4ae9f2a /test/behavior/struct.zig | |
| parent | 95fdbc579fc1df3c575baded7ec5edc1c3ce6e6d (diff) | |
| download | zig-9827ffe1ded884796aafe21cd6f6941f5ac3a279.tar.gz zig-9827ffe1ded884796aafe21cd6f6941f5ac3a279.zip | |
x86_64: fix incorrect handling of unreusable operands
Closes #23448
Diffstat (limited to 'test/behavior/struct.zig')
| -rw-r--r-- | test/behavior/struct.zig | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig index 27f56c7cba..93fb18dd1e 100644 --- a/test/behavior/struct.zig +++ b/test/behavior/struct.zig @@ -1527,7 +1527,7 @@ test "optional generic function label struct field" { } test "struct fields get automatically reordered" { - if (builtin.zig_backend != .stage2_llvm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; const S1 = struct { a: u32, @@ -2137,3 +2137,45 @@ test "anonymous struct equivalence" { comptime assert(A != C); comptime assert(B != C); } + +test "field access through mem ptr arg" { + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + + const S = struct { + fn nestedFieldAccess( + _: usize, + _: usize, + _: usize, + _: usize, + _: usize, + _: usize, + _: usize, + _: usize, + ptr_struct: *const struct { field: u32 }, + ) u32 { + return ptr_struct.field; + } + }; + try expect(S.nestedFieldAccess( + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + &.{ .field = 0x6b00a2eb }, + ) == 0x6b00a2eb); + comptime assert(S.nestedFieldAccess( + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + &.{ .field = 0x0ced271f }, + ) == 0x0ced271f); +} |
