-- This file tests simple array uses without replication -- Four unknown variables are available; x, y, z. -- Two arrays are automatically declared; a (size 10) and b (size 12) PROC p(INT x, y, z) [10]INT a: [12]INT b: PAR %% : PROC m() SKIP : %PASS Distinct constants a[0] := 3 a[1] := 4 a[4] := 5 %FAIL Identical constants a[0] := 3 a[0] := 4 %FAIL Identical constants, PAR assign a[0],a[0] := 3,4 %PASS Self-assign a[0] := a[0] a[1] := a[1] %PASS Self-assign, PAR assign a[0],a[1] := a[0],a[1] %PASS PAR assign swap a[0],a[1] := a[1],a[0] %PASS Same constant, different array a[0] := 3 b[0] := 4 %FAIL Identical variables x := 3 x := 4 %FAIL Identical variables, PAR assign x,x := 3,4 %FAIL Variable and a constant a[0] := 3 a[x] := 4 %PASS Out of bounds variable overlap #1 a[x * 10] := 3 a[(y * 9) + 1] := 4 %PASS Out of bounds variable overlap #2 a[x * 11] := 3 a[(y * 10) + 1] := 4 %FAIL In bounds variable overlap a[x * 9] := 3 a[(y * 8) + 1] := 4 %PASS Overlap with constants, but in sequence SEQ a[0] := 4 a[0] := 5 a[1] := 6 %FAIL Overlap with constants in nested PAR PAR a[0] := 4 a[0] := 5 a[1] := 6 %PASS Overlapping constants in reading a[1] := a[0] a[2] := a[0] %FAIL Two variables a[x] := 3 a[y] := 5 %PASS Multiplied variables a[x*y] := 3 a[(x*y) + 1] := 5 %PASS Modulo variable (c.d.) and a constant, safe a[x REM 3] := 3 a[3] := 4 %FAIL Modulo variable (c.d.) and a constant, unsafe a[x REM 3] := 3 a[2] := 4 %FAIL Modulo variable (v.d.) and a constant a[x REM y] := 3 a[0] := 4 %FAIL Modulo variable (v.d.) and normal variable (unsafe) a[x REM y] := 3 a[x + 1] := 4 %PASS Modulo variable (v.d.) and normal variable (safe) a[x REM y] := 3 a[y] := 4 %FAIL Overlap with items in nested replication a[0] := 3 PAR i = 0 FOR 6 a[i] := 4 %PASS Near-overlap with items in nested replication a[0] := 3 PAR i = 1 FOR 6 a[i] := 4 %FAIL Overlap with replicator start x := 3 PAR i = x FOR 6 a[i] := 4 %FAIL Overlap with replicator count x := 3 PAR i = 1 FOR x a[i] := 4 %PASS Branch inside parallel IF x < 0 y := 0 TRUE y := 2 %PASS PAR inside branch inside parallel IF x < 0 PAR x := 3 y := 4 TRUE PAR x := 2 y := 3 %PASS PAR with unuseable (but safe) division #1 a[x / y] := 3 a[(x / y) + 1] := 3 %PASS PAR with unuseable (but safe) division #2 a[x / (y * z)] := 3 a[(x / (z * y)) + 1] := 3 %PASS PAR with confusing multiplied indices #1 a[x * y] := 3 a[(y * x) + 1] := 3 %PASS PAR with confusing multiplied indices #2 a[(x * y) * z] := 3 a[((y * z) * x) + 1] := 3 a[(y * (z * x)) + 2] := 3 a[((x * z) * y) + 3] := 3 %PASS PAR with confusing multiplied indices #3 a[(x * y) / 3] := 3 a[((y * x) / 3) + 1] := 3 %PASS PAR with confusing multiplied indices #4 a[x*(x+y)] := 3 a[((x*x) + (x*y)) + 1] := 3 %PASS PAR with confusing multiplied indices #5 a[(x REM z)*(x+y)] := 3 a[(((x REM z)*x) + ((x REM z)*y)) + 1] := 3 %