Commit 8a0429e885

Meghan Denny <hello@nektro.net>
2024-01-26 14:26:37
test: add behavior coverage for global setter in function liveness
1 parent 20abf13
Changed files (1)
test
behavior
test/behavior/globals.zig
@@ -46,3 +46,29 @@ test "slices pointing at the same address as global array." {
     try S.checkAddress(&S.a);
     try comptime S.checkAddress(&S.a);
 }
+
+test "global loads can affect liveness" {
+    if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
+
+    const S = struct {
+        const ByRef = struct {
+            a: u32,
+        };
+
+        var global_ptr: *ByRef = undefined;
+
+        fn f() void {
+            global_ptr.* = .{ .a = 42 };
+        }
+    };
+
+    var x: S.ByRef = .{ .a = 1 };
+    S.global_ptr = &x;
+    const y = x;
+    S.f();
+    try std.testing.expect(y.a == 1);
+}