authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2024-01-26 05:26:37-08:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-01-26 15:26:37+02:00
log8a0429e885489eac497aa97fdfcaaa1befb2b6d4
tree92dcb672fba5cd8971675917cd12449ab031fcd0
parent20abf1394aef44eb1882e801f1d729fcff452db3
signaturebadge-check Signed by PGP key B5690EEEBB952194

test: add behavior coverage for global setter in function liveness


1 files changed, 26 insertions(+), 0 deletions(-)

test/behavior/globals.zig+26
......@@ -46,3 +46,29 @@ test "slices pointing at the same address as global array." {
4646 try S.checkAddress(&S.a);
4747 try comptime S.checkAddress(&S.a);
4848}
49
50test "global loads can affect liveness" {
51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56
57 const S = struct {
58 const ByRef = struct {
59 a: u32,
60 };
61
62 var global_ptr: *ByRef = undefined;
63
64 fn f() void {
65 global_ptr.* = .{ .a = 42 };
66 }
67 };
68
69 var x: S.ByRef = .{ .a = 1 };
70 S.global_ptr = &x;
71 const y = x;
72 S.f();
73 try std.testing.expect(y.a == 1);
74}