aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/o3scopes.zc
diff options
context:
space:
mode:
authorGravatar Moon Flower <moonflower@elhenney.local> 2026-10-12 08:46:23 +0330
committerGravatar Moon Flower <moonflower@elhenney.local> 2026-10-12 08:46:23 +0330
commitecc350ca5c2eb50be8309c5f14f8bf0d87db9a02 (patch)
tree70e0af76a1b13affff7c6cc8aac7b3e6ef960478 /tests/programs/o3scopes.zc
a
Diffstat (limited to 'tests/programs/o3scopes.zc')
-rw-r--r--tests/programs/o3scopes.zc17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/programs/o3scopes.zc b/tests/programs/o3scopes.zc
new file mode 100644
index 0000000..4dbf68c
--- /dev/null
+++ b/tests/programs/o3scopes.zc
@@ -0,0 +1,17 @@
+// registers reused by scopes that never overlap, and a fixed array read through its cached items and length
+o3 int scopes(fixed []int f) {
+ int total = 0;
+ for (int a = 0; a < 3; a++) { int x = a * 2; total += x; }
+ for (int b = 0; b < 3; b++) { int y = b * 3; total += y; }
+ for (int c = 0; c < 3; c++) { int z = c * 5; total += z; }
+ for (int e = 0; e < len(f); e++) { int w = f[e]; total += w; }
+ for (int g = 0; g < 4; g++) { int h = g + 1, q = h * h, r = q - 1; total += r; }
+ return total;
+}
+fn main() {
+ fixed []int f = new(fixed []int, 4);
+ for (int i = 0; i < 4; i++) f[i] = 10 * i;
+ put_n(scopes(f)); put_c(10);
+ free(d*f);
+ return 0;
+}