160 lines
3.0 KiB
Plaintext
160 lines
3.0 KiB
Plaintext
-- This file tests non-array variables used in safe but odd ways
|
|
-- in replicated PARs
|
|
|
|
PROC foo (VAL INT param)
|
|
INT x,y,z:
|
|
SEQ
|
|
x,y,z := 1,2,3
|
|
%%
|
|
:
|
|
|
|
PROC m ()
|
|
SKIP
|
|
:
|
|
|
|
%PASS Size one replicated PAR
|
|
PAR i = 7 FOR 1
|
|
x := 4
|
|
%PASS Size one replicated PAR, swap
|
|
PAR i = 7 FOR 1
|
|
x, y := y, x
|
|
%PASS Size one replicated PAR, hidden
|
|
[1]INT arr:
|
|
PAR i = 7 FOR SIZE arr
|
|
x := 4
|
|
%FAIL Size one replicated PAR, but double
|
|
PAR i = 7 FOR 1
|
|
PAR
|
|
x := 4
|
|
x := 5
|
|
%FAIL Size one replicated PAR, but double 2
|
|
PAR
|
|
PAR i = 7 FOR 1
|
|
x := 4
|
|
x := 5
|
|
%PASS Size zero unsafe replicated PAR
|
|
PAR i = 8 FOR 0
|
|
PAR
|
|
x := 4
|
|
x := 3
|
|
%PASS Size one and size zero replicated PAR
|
|
PAR
|
|
PAR i = 8 FOR 0
|
|
x := 4
|
|
PAR i = 7 FOR 1
|
|
x := 3
|
|
|
|
%PASS Result stored in one branch of replicated PAR
|
|
PAR i = 0 FOR 10
|
|
IF
|
|
i = 0
|
|
x := i
|
|
TRUE
|
|
SKIP
|
|
%PASS Unsafe in obviously not-possible branch of replicated PAR
|
|
PAR i = 0 FOR 10
|
|
IF
|
|
i > 10
|
|
x := i
|
|
TRUE
|
|
SKIP
|
|
%PASS Unsafe in less-obviously not-possible branch of replicated PAR
|
|
PAR i = 5 FOR param
|
|
IF
|
|
i > (param+5)
|
|
x := i
|
|
TRUE
|
|
SKIP
|
|
%FAIL Unsafe in possible branches of replicated PAR
|
|
PAR i = 0 FOR 10
|
|
IF
|
|
i = 0
|
|
x := 3
|
|
i = 1
|
|
x := 4
|
|
TRUE
|
|
SKIP
|
|
%FAIL Unsafe after possible branches of replicated PAR
|
|
PAR i = 0 FOR 10
|
|
SEQ
|
|
IF
|
|
i = 0
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
x := 2
|
|
%FAIL Unsafe without branch in replicated PAR
|
|
PAR i = 0 FOR 10
|
|
SEQ
|
|
x := 2
|
|
%FAIL Unsafe with dummy branch in replicated PAR
|
|
PAR i = 0 FOR 10
|
|
SEQ
|
|
IF
|
|
i = 3
|
|
SKIP
|
|
TRUE
|
|
SKIP
|
|
x := 2
|
|
|
|
|
|
%FAIL Unsafe in possible branch of replicated PAR vs normal PAR
|
|
PAR i = 0 FOR 10
|
|
PAR
|
|
IF
|
|
i = 0
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
x := 4
|
|
|
|
%FAIL Unsafe in possible branch of replicated PAR
|
|
PAR i = 0 FOR 10
|
|
IF
|
|
i <= 1
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
%PASS Safe in one possible branched-branch of replicated PAR
|
|
PAR i = -5 FOR 10
|
|
IF
|
|
i <= 0
|
|
IF
|
|
i >= 0
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
TRUE
|
|
SKIP
|
|
%PASS Unsafe in one possible branched-branch of replicated PAR in a replicated SEQ
|
|
SEQ k = 0 FOR 3
|
|
PAR i = -5 FOR 10
|
|
IF
|
|
i <= 0
|
|
IF
|
|
i >= 0
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
TRUE
|
|
SKIP
|
|
|
|
%PASS Safe in two replicators only
|
|
PAR i = 0 FOR 10
|
|
PAR j = 0 FOR 10
|
|
IF
|
|
((i * j) = 0) AND (i = j)
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
%FAIL Unsafe in two replicators
|
|
PAR i = 0 FOR 10
|
|
PAR j = 0 FOR 10
|
|
IF
|
|
i = j
|
|
x := 3
|
|
TRUE
|
|
SKIP
|
|
|
|
%
|