aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/struct.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2025-04-03 12:09:07 -0400
committerAndrew Kelley <andrew@ziglang.org>2025-04-05 20:49:56 -0400
commit9827ffe1ded884796aafe21cd6f6941f5ac3a279 (patch)
tree2a4d390be7beaca88916ef4ac9c5dd34b4ae9f2a /test/behavior/struct.zig
parent95fdbc579fc1df3c575baded7ec5edc1c3ce6e6d (diff)
downloadzig-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.zig44
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);
+}