a68: testsuite: execution tests 2/2

Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>

gcc/testsuite/ChangeLog

	* algol68/execute/loop-7.a68: New file.
	* algol68/execute/loop-8.a68: Likewise.
	* algol68/execute/loop-9.a68: Likewise.
	* algol68/execute/loop-overflow-underflow.a68: Likewise.
	* algol68/execute/lt-int-1.a68: Likewise.
	* algol68/execute/lt-string-stride-1.a68: Likewise.
	* algol68/execute/lwb-1.a68: Likewise.
	* algol68/execute/minus-int-1.a68: Likewise.
	* algol68/execute/minusab-1.a68: Likewise.
	* algol68/execute/minusab-2.a68: Likewise.
	* algol68/execute/minusab-3.a68: Likewise.
	* algol68/execute/minusab-4.a68: Likewise.
	* algol68/execute/mod-int-1.a68: Likewise.
	* algol68/execute/modab-1.a68: Likewise.
	* algol68/execute/modab-2.a68: Likewise.
	* algol68/execute/mode-indication-1.a68: Likewise.
	* algol68/execute/mult-char-1.a68: Likewise.
	* algol68/execute/mult-int-1.a68: Likewise.
	* algol68/execute/mult-string-1.a68: Likewise.
	* algol68/execute/mult-string-2.a68: Likewise.
	* algol68/execute/mult-string-3.a68: Likewise.
	* algol68/execute/mult-string-4.a68: Likewise.
	* algol68/execute/multab-1.a68: Likewise.
	* algol68/execute/multab-2.a68: Likewise.
	* algol68/execute/multab-3.a68: Likewise.
	* algol68/execute/mutual-recursion-1.a68: Likewise.
	* algol68/execute/ne-bits-1.a68: Likewise.
	* algol68/execute/ne-char-char-1.a68: Likewise.
	* algol68/execute/ne-int-1.a68: Likewise.
	* algol68/execute/ne-string-1.a68: Likewise.
	* algol68/execute/neg-int-1.a68: Likewise.
	* algol68/execute/not-bits-1.a68: Likewise.
	* algol68/execute/odd-1.a68: Likewise.
	* algol68/execute/op-1.a68: Likewise.
	* algol68/execute/op-2.a68: Likewise.
	* algol68/execute/op-3.a68: Likewise.
	* algol68/execute/operator-declaration-1.a68: Likewise.
	* algol68/execute/or-bits-1.a68: Likewise.
	* algol68/execute/orf-1.a68: Likewise.
	* algol68/execute/over-int-1.a68: Likewise.
	* algol68/execute/overab-1.a68: Likewise.
	* algol68/execute/overab-2.a68: Likewise.
	* algol68/execute/particular-program-1.a68: Likewise.
	* algol68/execute/plus-char-1.a68: Likewise.
	* algol68/execute/plus-int-1.a68: Likewise.
	* algol68/execute/plus-string-1.a68: Likewise.
	* algol68/execute/plus-string-2.a68: Likewise.
	* algol68/execute/plus-string-stride-1.a68: Likewise.
	* algol68/execute/plusab-1.a68: Likewise.
	* algol68/execute/plusab-2.a68: Likewise.
	* algol68/execute/plusab-3.a68: Likewise.
	* algol68/execute/plusab-4.a68: Likewise.
	* algol68/execute/plusab-string-1.a68: Likewise.
	* algol68/execute/plusto-char-1.a68: Likewise.
	* algol68/execute/plusto-string-1.a68: Likewise.
	* algol68/execute/posix-argc-argv-1.a68: Likewise.
	* algol68/execute/posix-fopen-1.a68: Likewise.
	* algol68/execute/posix-fputc-fputs-1.a68: Likewise.
	* algol68/execute/posix-getenv-1.a68: Likewise.
	* algol68/execute/posix-perror-1.a68: Likewise.
	* algol68/execute/posix-putchar-1.a68: Likewise.
	* algol68/execute/posix-stdinouterr-1.a68: Likewise.
	* algol68/execute/posix-strerror-1.a68: Likewise.
	* algol68/execute/posix-stride-1.a68: Likewise.
	* algol68/execute/pow-int-1.a68: Likewise.
	* algol68/execute/pow-real-1.a68: Likewise.
	* algol68/execute/proc-1.a68: Likewise.
	* algol68/execute/proc-10.a68: Likewise.
	* algol68/execute/proc-12.a68: Likewise.
	* algol68/execute/proc-13.a68: Likewise.
	* algol68/execute/proc-14.a68: Likewise.
	* algol68/execute/proc-15.a68: Likewise.
	* algol68/execute/proc-16.a68: Likewise.
	* algol68/execute/proc-17.a68: Likewise.
	* algol68/execute/proc-18.a68: Likewise.
	* algol68/execute/proc-19.a68: Likewise.
	* algol68/execute/proc-2.a68: Likewise.
	* algol68/execute/proc-20.a68: Likewise.
	* algol68/execute/proc-21.a68: Likewise.
	* algol68/execute/proc-22.a68: Likewise.
	* algol68/execute/proc-23.a68: Likewise.
	* algol68/execute/proc-25.a68: Likewise.
	* algol68/execute/proc-26.a68: Likewise.
	* algol68/execute/proc-27.a68: Likewise.
	* algol68/execute/proc-28.a68: Likewise.
	* algol68/execute/proc-29.a68: Likewise.
	* algol68/execute/proc-3.a68: Likewise.
	* algol68/execute/proc-4.a68: Likewise.
	* algol68/execute/proc-5.a68: Likewise.
	* algol68/execute/proc-6.a68: Likewise.
	* algol68/execute/proc-7.a68: Likewise.
	* algol68/execute/proc-8.a68: Likewise.
	* algol68/execute/procedured-goto-1.a68: Likewise.
	* algol68/execute/quine.a68: Likewise.
	* algol68/execute/random-1.a68: Likewise.
	* algol68/execute/re-im-1.a68: Likewise.
	* algol68/execute/rela-string-1.a68: Likewise.
	* algol68/execute/repr-1.a68: Likewise.
	* algol68/execute/round-1.a68: Likewise.
	* algol68/execute/row-display-1.a68: Likewise.
	* algol68/execute/row-display-2.a68: Likewise.
	* algol68/execute/row-display-3.a68: Likewise.
	* algol68/execute/row-display-4.a68: Likewise.
	* algol68/execute/row-display-5.a68: Likewise.
	* algol68/execute/rowing-1.a68: Likewise.
	* algol68/execute/rowing-10.a68: Likewise.
	* algol68/execute/rowing-11.a68: Likewise.
	* algol68/execute/rowing-12.a68: Likewise.
	* algol68/execute/rowing-13.a68: Likewise.
	* algol68/execute/rowing-2.a68: Likewise.
	* algol68/execute/rowing-3.a68: Likewise.
	* algol68/execute/rowing-4.a68: Likewise.
	* algol68/execute/rowing-5.a68: Likewise.
	* algol68/execute/rowing-6.a68: Likewise.
	* algol68/execute/rowing-7.a68: Likewise.
	* algol68/execute/rowing-8.a68: Likewise.
	* algol68/execute/rowing-9.a68: Likewise.
	* algol68/execute/selection-1.a68: Likewise.
	* algol68/execute/selection-2.a68: Likewise.
	* algol68/execute/selection-3.a68: Likewise.
	* algol68/execute/selection-4.a68: Likewise.
	* algol68/execute/selection-5.a68: Likewise.
	* algol68/execute/selection-multiple-1.a68: Likewise.
	* algol68/execute/selection-multiple-2.a68: Likewise.
	* algol68/execute/serial-clause-1.a68: Likewise.
	* algol68/execute/serial-clause-10.a68: Likewise.
	* algol68/execute/serial-clause-2.a68: Likewise.
	* algol68/execute/serial-clause-3.a68: Likewise.
	* algol68/execute/serial-clause-4.a68: Likewise.
	* algol68/execute/serial-clause-5.a68: Likewise.
	* algol68/execute/serial-clause-6.a68: Likewise.
	* algol68/execute/serial-clause-7.a68: Likewise.
	* algol68/execute/serial-clause-8.a68: Likewise.
	* algol68/execute/serial-clause-9.a68: Likewise.
	* algol68/execute/serial-dsa-1.a68: Likewise.
	* algol68/execute/serial-dsa-2.a68: Likewise.
	* algol68/execute/serial-dsa-3.a68: Likewise.
	* algol68/execute/serial-dsa-4.a68: Likewise.
	* algol68/execute/serial-dsa-5.a68: Likewise.
	* algol68/execute/serial-dsa-6.a68: Likewise.
	* algol68/execute/sign-int-1.a68: Likewise.
	* algol68/execute/sign-real-1.a68: Likewise.
	* algol68/execute/sin-1.a68: Likewise.
	* algol68/execute/skip-1.a68: Likewise.
	* algol68/execute/skip-2.a68: Likewise.
	* algol68/execute/skip-struct-1.a68: Likewise.
	* algol68/execute/slice-indexing-1.a68: Likewise.
	* algol68/execute/slice-indexing-2.a68: Likewise.
	* algol68/execute/slice-indexing-3.a68: Likewise.
	* algol68/execute/slice-indexing-4.a68: Likewise.
	* algol68/execute/slice-indexing-5.a68: Likewise.
	* algol68/execute/slice-indexing-6.a68: Likewise.
	* algol68/execute/slice-indexing-7.a68: Likewise.
	* algol68/execute/sqrt-1.a68: Likewise.
	* algol68/execute/string-1.a68: Likewise.
	* algol68/execute/string-2.a68: Likewise.
	* algol68/execute/string-4.a68: Likewise.
	* algol68/execute/string-break-1.a68: Likewise.
	* algol68/execute/struct-self-1.a68: Likewise.
	* algol68/execute/struct-self-2.a68: Likewise.
	* algol68/execute/struct-self-3.a68: Likewise.
	* algol68/execute/structure-display-1.a68: Likewise.
	* algol68/execute/structure-display-2.a68: Likewise.
	* algol68/execute/structure-display-3.a68: Likewise.
	* algol68/execute/structure-display-4.a68: Likewise.
	* algol68/execute/structure-display-5.a68: Likewise.
	* algol68/execute/tan-1.a68: Likewise.
	* algol68/execute/timesab-string-1.a68: Likewise.
	* algol68/execute/trimmer-1.a68: Likewise.
	* algol68/execute/trimmer-10.a68: Likewise.
	* algol68/execute/trimmer-2.a68: Likewise.
	* algol68/execute/trimmer-3.a68: Likewise.
	* algol68/execute/trimmer-4.a68: Likewise.
	* algol68/execute/trimmer-5.a68: Likewise.
	* algol68/execute/trimmer-6.a68: Likewise.
	* algol68/execute/trimmer-7.a68: Likewise.
	* algol68/execute/trimmer-8.a68: Likewise.
	* algol68/execute/trimmer-9.a68: Likewise.
	* algol68/execute/trimmer-matrix-1.a68: Likewise.
	* algol68/execute/trimmer-matrix-2.a68: Likewise.
	* algol68/execute/trimmer-matrix-3.a68: Likewise.
	* algol68/execute/trimmer-matrix-4.a68: Likewise.
	* algol68/execute/trimmer-matrix-5.a68: Likewise.
	* algol68/execute/trimmer-matrix-6.a68: Likewise.
	* algol68/execute/trimmer-name-1.a68: Likewise.
	* algol68/execute/undefined-1.a68: Likewise.
	* algol68/execute/undefined-2.a68: Likewise.
	* algol68/execute/undefined-3.a68: Likewise.
	* algol68/execute/undefined-4.a68: Likewise.
	* algol68/execute/undefined-5.a68: Likewise.
	* algol68/execute/uniting-1.a68: Likewise.
	* algol68/execute/uniting-2.a68: Likewise.
	* algol68/execute/uniting-3.a68: Likewise.
	* algol68/execute/uniting-4.a68: Likewise.
	* algol68/execute/up-down-bits-1.a68: Likewise.
	* algol68/execute/upb-1.a68: Likewise.
	* algol68/execute/vacuum-1.a68: Likewise.
	* algol68/execute/variable-declaration-1.a68: Likewise.
	* algol68/execute/variable-declaration-2.a68: Likewise.
	* algol68/execute/variable-declaration-3.a68: Likewise.
	* algol68/execute/variable-declaration-4.a68: Likewise.
	* algol68/execute/variable-declaration-5.a68: Likewise.
	* algol68/execute/variable-declaration-6.a68: Likewise.
	* algol68/execute/variable-declaration-heap-1.a68: Likewise.
	* algol68/execute/variable-declaration-heap-2.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-1.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-2.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-3.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-4.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-5.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-6.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-7.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-8.a68: Likewise.
	* algol68/execute/variable-declaration-multiple-9.a68: Likewise.
	* algol68/execute/voiding-1.a68: Likewise.
	* algol68/execute/widening-1.a68: Likewise.
	* algol68/execute/widening-2.a68: Likewise.
	* algol68/execute/widening-bits-1.a68: Likewise.
	* algol68/execute/widening-bits-2.a68: Likewise.
	* algol68/execute/widening-bits-3.a68: Likewise.
	* algol68/execute/xor-bits-1.a68: Likewise.
	* algol68/execute/environment-enquiries-8.a68: Likewise.
This commit is contained in:
Jose E. Marchesi
2025-10-11 19:57:22 +02:00
parent e39070324a
commit f34e1dcb98
255 changed files with 2239 additions and 1 deletions

View File

@@ -2,5 +2,5 @@
BEGIN ASSERT (flip = "T");
ASSERT (flop = "F");
ASSERT (error char = "*");
ASSERT (ABS invalid char = ABS 16rfffd)
ASSERT (ABS replacement char = ABS 16rfffd)
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i := 0, n := 5;
TO n + 1 DO i +:= 1 OD;
ASSERT (i = 6)
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i := 0, n := 2;
FOR a TO n + 1 DO i +:= a OD;
ASSERT (i = 1 + 2 + 3)
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i := 0, n := 2;
FOR a FROM n TO n + 2 DO i +:= a OD;
ASSERT (i = 2 + 3 + 4)
END

View File

@@ -0,0 +1,55 @@
{ Test for overflow/underflow in loops with implicit and explicit
iterators. }
begin int count;
{ Overflow. }
count := 0;
by 1 while true do count +:= 1 od;
assert (count = max_int);
count := 0;
from max_int do count +:= 1 od;
assert (count = 1);
count := 0;
by max_int do count +:= 1 od;
assert (count = 1);
count := 0;
for i by max_int do count +:= 1 od;
assert (count = 1);
count := 0;
by max_int % 2 do count +:= 1 od;
assert (count = 3);
count := 0;
by max_int - 1 do count +:= 1 od;
assert (count = 2);
{ Underflow. }
count := 0;
by -1 while true do count +:= 1 od;
assert (count = -min_int + 2);
count := 0;
from min_int by -1 do count +:= 1 od;
assert (count = 1);
count := 0;
by min_int do count +:= 1 od;
assert (count = 2);
count := 0;
for i by min_int do count +:= 1 od;
assert (count = 2);
count := 0;
by min_int % 2 do count +:= 1 od;
assert (count = 3);
count := 0;
by min_int + 1 do count +:= 1 od;
assert (count = 2)
end

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 12;
LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12;
SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12;
ASSERT (i < 13);
ASSERT (ii LT LONG 13);
ASSERT (iii < LONG LONG 13);
ASSERT (s < SHORT 13);
ASSERT (ss < SHORT SHORT 13)
END

View File

@@ -0,0 +1,7 @@
# { dg-options "-fstropping=upper" } #
BEGIN [,]CHAR matrix = (("1", "Z", "1"),
("4", "Y", "4"),
("7", "X", "9"));
ASSERT (matrix[1:3,1] < matrix[1:3,3]);
ASSERT (("1","4","0") < matrix[1:3,3])
END

View File

@@ -0,0 +1,6 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT (LWB "foo" = 1);
ASSERT (LWB "" = 1);
ASSERT (1 LWB "foo" = 1);
ASSERT (1 LWB "" = 1)
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 10;
LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10;
SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10;
ASSERT (i - 2 = 8);
ASSERT (ii - LONG 2 = LONG 8);
ASSERT (iii - LONG LONG 2 = LONG LONG 8);
ASSERT (ss - SHORT 2 = SHORT 8);
ASSERT (sss - SHORT SHORT 2 = SHORT SHORT 8)
END

View File

@@ -0,0 +1,32 @@
# { dg-options "-fstropping=upper" } #
BEGIN BEGIN INT i := 10;
i -:= 2;
ASSERT (i = 8);
i MINUSAB 2;
ASSERT (i = 6)
END;
BEGIN LONG INT i := LONG 1000;
i -:= LONG 100;
ASSERT (i = LONG 900);
i MINUSAB LONG 100;
ASSERT (i = LONG 800)
END;
BEGIN LONG LONG INT i := LONG LONG 10000;
i -:= LONG LONG 1000;
ASSERT (i = LONG LONG 9000);
i MINUSAB LONG LONG 1000;
ASSERT (i = LONG LONG 8000)
END;
BEGIN SHORT INT i := SHORT 100;
i -:= SHORT 10;
ASSERT (i = SHORT 90);
i MINUSAB SHORT 10;
ASSERT (i = SHORT 80)
END;
BEGIN SHORT SHORT INT i := SHORT SHORT 10;
i -:= SHORT SHORT 1;
ASSERT (i = SHORT SHORT 9);
i MINUSAB SHORT SHORT 2;
ASSERT (i = SHORT SHORT 7)
END
END

View File

@@ -0,0 +1,20 @@
# { dg-options "-fstropping=upper" } #
BEGIN BEGIN REAL i := 10.0;
i -:= 2.0;
ASSERT (i = 8.0);
i MINUSAB 2.0;
ASSERT (i = 6.0)
END;
BEGIN LONG REAL i := LONG 1000.0;
i -:= LONG 100.0;
ASSERT (i = LONG 900.0);
i MINUSAB LONG 100.0;
ASSERT (i = LONG 800.0)
END;
BEGIN LONG LONG REAL i := LONG LONG 10000.0;
i -:= LONG LONG 1000.0;
ASSERT (i = LONG LONG 9000.0);
i MINUSAB LONG LONG 1000.0;
ASSERT (i = LONG LONG 8000.0)
END
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT n := 10;
(((n -:= 1))) := 5;
ASSERT (n = 5)
END

View File

@@ -0,0 +1,6 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT num ints := 10;
num ints -:= 1;
ASSERT (num ints = 9);
ASSERT ((LOC INT -:= 12) = -12)
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 10;
LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10;
SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10;
ASSERT (i %* 3 = 1);
ASSERT (ii %* LONG 3 = LONG 1);
ASSERT (iii %* LONG LONG 3 = LONG LONG 1);
ASSERT (ss %* SHORT 3 = SHORT 1);
ASSERT (sss MOD SHORT SHORT 3 = SHORT SHORT 1)
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN (SHORT SHORT INT i := SHORT SHORT 11; i MODAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 1));
(SHORT INT i := SHORT 11; i MODAB SHORT 2; ASSERT (i = SHORT 1));
(INT i := 11; i MODAB 2; ASSERT (i = 1));
(INT i := 11; i %*:= 2; ASSERT (i = 1));
(LONG INT i := LONG 11; i MODAB LONG 2; ASSERT (i = LONG 1));
(LONG INT i := LONG 11; i %*:= LONG 2; ASSERT (i = LONG 1));
(LONG LONG INT i := LONG LONG 11; i MODAB LONG LONG 2; ASSERT (i = LONG LONG 1));
(LONG LONG INT i := LONG LONG 11; i %*:= LONG LONG 2; ASSERT (i = LONG LONG 1))
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT n := 10;
(((n MODAB 1))) := 5;
ASSERT (n = 5)
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT j; REAL y;
MODE R = REAL;
BEGIN MODE R = INT;
R i := j;
SKIP
END;
R x := y;
SKIP
END

View File

@@ -0,0 +1,7 @@
This directory contains tests that require using several packets.
Files named module*.a68 contain prelude packets, i.e. the definitions
of one or more modules. These are to be referred within test programs
using dg-modules.
Each program*.a68 file is a testcase.

View File

@@ -0,0 +1,42 @@
# Copyright (C) 2024 Free Software Foundation, Inc.
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Execute tests, torture testing.
if $tracelevel then {
strace $tracelevel
}
load_lib algol68-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $TORTURE_OPTIONS
# The programs need to be able to find the built modules, which are
# left in objdir.
global BUILT_MODULES_DIR
set BUILT_MODULES_DIR "$objdir"
foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/program-*.a68]] {
# If we're only testing specific files and this isn't one of them, skip it.
if ![runtest_file_p $runtests $testcase] then {
continue
}
algol68-torture-execute $testcase
set algol68_compile_args ""
}
torture-finish

View File

@@ -0,0 +1,9 @@
module Module1 =
def
pub mode MyInt = int;
pub int beast_number := 666;
pub string who = "jemarch";
puts ("Hello from module'n")
postlude
puts ("Bye from module'n")
fed

View File

@@ -0,0 +1,7 @@
module Module10 =
access Module9, Module3
def int je = foo;
prio QUUX = 9;
pub Lala bar = (bump; getcounter); {11}
skip
fed

View File

@@ -0,0 +1,11 @@
{ Mixing module texts with revelations and without revelations. }
module Module11 =
access Module1, Module3
def pub proc someproc = (int a, b) int: a + b;
skip
postlude
skip
fed,
Foo = def skip postlude skip fed,
Bar = def skip fed

View File

@@ -0,0 +1,5 @@
module Module_12 =
def pub proc foo = (proc(int,string)void cb, int a) void: cb (a, "Foo");
pub proc bar = (real r) void: skip;
skip
fed

View File

@@ -0,0 +1,5 @@
module Module_13 =
def
pub mode JSON_Val = struct (int i);
skip
fed

View File

@@ -0,0 +1,5 @@
module Module14 =
access Module13
def pub proc getval = JSON_Val: skip;
skip
fed

View File

@@ -0,0 +1,8 @@
module Module15 =
access Module13, Module14
def pub proc foo = int:
begin JSON_Val val = getval;
i of val
end;
skip
fed

View File

@@ -0,0 +1,8 @@
module Module_16 =
def
pub int counter;
skip
postlude
assert (counter = 666);
skip
fed

View File

@@ -0,0 +1,13 @@
module Module =
def
pub int ce_port;
pub string ce_host;
pub proc ce_connect = void:
myconnect (ce_host, ce_port);
proc myconnect = (string host, int port) void:
skip;
skip
fed

View File

@@ -0,0 +1,11 @@
module Module_3 =
def
{ variable = 0 in_proc = 1 } pub proc bump = void: counter +:= 1;
{ variable = 0 in_proc = 1 } pub proc bumptimes = (int n) void: to n do bump od;
{ variable = 1 in_proc = 0 } pub proc vbump := void: counter +:= 1;
{ variable = 1 in_proc = 0 } pub proc vbumptimes := (int n) void: to n do vbump od;
{ variable = 0 in_proc = 1 } pub proc getcounter = int: counter;
{ variable = 0 in_proc = 0 } pub proc int anothergetcounter = getcounter;
int counter := 10;
skip
fed

View File

@@ -0,0 +1,4 @@
module Module_4 =
def pub int ten = 10;
skip
fed

View File

@@ -0,0 +1,7 @@
module Module_5 =
def pub prio // = 9;
pub op // = (int a, b) int: a + b;
pub prio LALA = 9;
pub op LALA = (int a, b) int: a - b;
skip
fed

View File

@@ -0,0 +1,5 @@
module Module_6 =
def prio // = 9; { Note priority is not publicized. }
pub op // = (int a, b) int: a + b;
skip
fed

View File

@@ -0,0 +1,10 @@
{ This module exports an operator defined in a non-brief operator
declaration. This means the exported symbol is a pointer to a
function and shall be indirected on the accessing side. }
module Module_7 =
def pub prio MINUS = 9;
pub op (int,int)int MINUS = minus;
proc minus = (int a, b) int: a - b;
skip
fed

View File

@@ -0,0 +1,9 @@
module Module_8 =
access Module_1, Module_4
def
pub proc checks = void:
begin assert (ten = 10);
assert (beast_number = 666)
end;
skip
fed

View File

@@ -0,0 +1,8 @@
module Module9 =
def pub int foo = 10;
pub prio // = 9;
pub op QUUX = (int a, b) int: a + b;
prio QUUX = 9;
pub mode Lala = int;
skip
fed

View File

@@ -0,0 +1,20 @@
{ dg-modules "module1" }
begin string je = access Module1 begin who end;
string ju = access Module1 ( who );
string ji = access Module1 if true then who else who fi;
string ja = access Module1 (true | who | who);
string aa = access Module1 case 1 in who, "no" esac;
mode United = union (void,int);
string bb = access Module1 case United (10) in (int): who esac;
string cc = access Module1 (1 | who, "no");
assert (je = "jemarch");
assert (ju = "jemarch");
assert (ji = "jemarch");
assert (ja = "jemarch");
assert (aa = "jemarch");
assert (bb = "jemarch");
assert (cc = "jemarch");
access Module1 to 1 do assert (who = "jemarch") od;
access Module1 (assert (beast_number = 666))
end

View File

@@ -0,0 +1,6 @@
{ dg-modules "module3 module9 module10" }
access Module10
begin int x = 11;
assert (x = bar)
end

View File

@@ -0,0 +1,3 @@
{ dg-modules "module1 module3 module11" }
access Module11 ( assert (someproc (2, 3) = 5))

View File

@@ -0,0 +1,6 @@
{ dg-modules "module12" }
access Module_12
begin proc lala = (int n, string s) void: skip;
foo (lala, 10)
end

View File

@@ -0,0 +1,3 @@
{ dg-modules "module13 module14 module15" }
access Module15 (assert (foo = 0))

View File

@@ -0,0 +1,8 @@
{ dg-modules module16 }
access Module_16
begin assert (counter = 0);
counter := 20;
access Module_16 (assert (counter = 20));
counter := 666
end

View File

@@ -0,0 +1,7 @@
{ dg-modules module17 }
access Module17
begin ce_port := 8888;
ce_host := "localhost";
ce_connect
end

View File

@@ -0,0 +1,15 @@
{ dg-modules "module1" }
begin int x = 1 + access Module1 ( beast_number);
int i = access Module1 ( beast_number ) + 1;
int z = 1 + access Module1 if true then beast_number fi;
int v = access Module1 if true then beast_number fi + 1;
int w = access Module1 if true then beast_number fi
+ access Module1 if true then beast_number fi;
assert (i = 667);
assert (x = 667);
assert (z = 667);
assert (v = 667);
assert (w = 666 * 2);
skip
end

View File

@@ -0,0 +1,16 @@
{ dg-modules "module3" }
access Module_3
begin assert (getcounter = 10);
bump;
assert (getcounter = 11);
bumptimes (3);
assert (getcounter = 14)
{ vbump and vbumptimes are set to non-publicized routines
that are local to the module, so it is a scope violation
to call them. }
{ vbump;
assert (getcounter = 15);
vbumptimes (10);
assert (anothergetcounter = 25) }
end

View File

@@ -0,0 +1,7 @@
{ dg-modules "module4" }
{ The widening coercion "jumps" inside the controlled xclause. }
begin real realten = access Module_4 (ten);
skip
end

View File

@@ -0,0 +1,7 @@
{ dg-modules "module5" }
access Module_5
begin assert (2 // 3 = 5);
assert (2 LALA 3 = -1);
skip
end

View File

@@ -0,0 +1,9 @@
{ dg-modules "module6" }
{ New priority is given to an importe operator. }
access Module_6
begin assert (2 // 3 = 5);
prio // = 9;
skip
end

View File

@@ -0,0 +1,3 @@
{ dg-modules "module7" }
access Module_7 ( assert (2 MINUS 3 = -1) )

View File

@@ -0,0 +1,3 @@
{ dg-modules "module1 module4 module8" }
access Module_8 (checks)

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT ("a" * 3 = "aaa");
ASSERT ("" * 1 = "");
ASSERT ("x" * 0 = "x")
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 10;
LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10;
SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10;
ASSERT (i * 2 = 20);
ASSERT (ii * LONG 2 = LONG 20);
ASSERT (iii * LONG LONG 2 = LONG LONG 20);
ASSERT (ss * SHORT 2 = SHORT 20);
ASSERT (sss * SHORT SHORT 2 = SHORT SHORT 20)
END

View File

@@ -0,0 +1,13 @@
# { dg-options "-fstropping=upper" } #
BEGIN STRING foo = "foo";
ASSERT (foo * -10 = "foo");
ASSERT (-10 * foo = "foo");
ASSERT (foo * 0 = "foo");
ASSERT (0 * foo = "foo");
ASSERT (foo * 1 = "foo");
ASSERT (1 * foo = "foo");
ASSERT (foo * 2 = "foofoo");
ASSERT (2 * foo = "foofoo");
ASSERT (foo * 3 = "foofoofoo");
ASSERT (3 * foo = "foofoofoo")
END

View File

@@ -0,0 +1,13 @@
# { dg-options "-fstropping=upper" } #
BEGIN []CHAR foo = ("f","o","o");
ASSERT (foo * -10 = "foo");
ASSERT (-10 * foo = "foo");
ASSERT (foo * 0 = "foo");
ASSERT (0 * foo = "foo");
ASSERT (foo * 1 = "foo");
ASSERT (1 * foo = "foo");
ASSERT (foo * 2 = "foofoo");
ASSERT (2 * foo = "foofoo");
ASSERT (foo * 3 = "foofoofoo");
ASSERT (3 * foo = "foofoofoo")
END

View File

@@ -0,0 +1,13 @@
# { dg-options "-fstropping=upper" } #
BEGIN FLEX[3]CHAR foo := ("f","o","o");
ASSERT (foo * -10 = "foo");
ASSERT (-10 * foo = "foo");
ASSERT (foo * 0 = "foo");
ASSERT (0 * foo = "foo");
ASSERT (foo * 1 = "foo");
ASSERT (1 * foo = "foo");
ASSERT (foo * 2 = "foofoo");
ASSERT (2 * foo = "foofoo");
ASSERT (foo * 3 = "foofoofoo");
ASSERT (3 * foo = "foofoofoo")
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN STRING foo = "abc";
ASSERT (foo[] * 2 = "abcabc")
END

View File

@@ -0,0 +1,31 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i := 2;
i *:= 2;
ASSERT (i = 4);
i *:= 2;
ASSERT (i = 8);
SHORT INT s := SHORT 2;
s *:= SHORT 2;
ASSERT (s = SHORT 4);
s *:= SHORT 3;
ASSERT (s = SHORT 12);
SHORT SHORT INT ss := SHORT SHORT 2;
ss *:= SHORT SHORT 2;
ASSERT (ss = SHORT SHORT 4);
ss *:= SHORT SHORT 3;
ASSERT (ss = SHORT SHORT 12);
REF LONG INT ii = HEAP LONG INT := LONG 2;
ii *:= LONG 2;
ASSERT (ii = LONG 4);
ii *:= LONG 2;
ASSERT (ii = LONG 8);
LONG LONG INT iii := LONG LONG 2;
iii *:= LONG LONG 2;
ASSERT (iii = LONG LONG 4);
iii *:= LONG LONG 2;
ASSERT (iii = LONG LONG 8)
END

View File

@@ -0,0 +1,31 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i := 2;
i TIMESAB 2;
ASSERT (i = 4);
i TIMESAB 2;
ASSERT (i = 8);
REF SHORT INT ss = HEAP SHORT INT := SHORT 2;
ss TIMESAB SHORT 2;
ASSERT (ss = SHORT 4);
ss TIMESAB SHORT 2;
ASSERT (ss = SHORT 8);
SHORT SHORT INT sss := SHORT SHORT 2;
sss TIMESAB SHORT SHORT 2;
ASSERT (sss = SHORT SHORT 4);
sss TIMESAB SHORT SHORT 2;
ASSERT (sss = SHORT SHORT 8);
REF LONG INT ii = HEAP LONG INT := LONG 2;
ii TIMESAB LONG 2;
ASSERT (ii = LONG 4);
ii TIMESAB LONG 2;
ASSERT (ii = LONG 8);
LONG LONG INT iii := LONG LONG 2;
iii TIMESAB LONG LONG 2;
ASSERT (iii = LONG LONG 4);
iii TIMESAB LONG LONG 2;
ASSERT (iii = LONG LONG 8)
END

View File

@@ -0,0 +1,6 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT num ints := 10;
num ints *:= 2;
ASSERT (num ints = 20);
ASSERT ((LOC INT *:= 12) = 0)
END

View File

@@ -0,0 +1,6 @@
# { dg-options "-fstropping=upper" } #
BEGIN PROC is even = (INT n) BOOL: (n = 0 | TRUE | is odd (n - 1));
PROC is odd = (INT n) BOOL: (n = 0 | FALSE | is even (n - 1));
ASSERT (is even (20));
ASSERT (is odd (13))
END

View File

@@ -0,0 +1,9 @@
# { dg-options "-fstropping=upper" } #
BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb;
SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss;
ASSERT (b /= 2r1);
ASSERT (bb NE LONG 8r477);
ASSERT (bbb /= LONG LONG 8r2);
ASSERT (ss NE SHORT 8r477);
ASSERT (sss /= SHORT SHORT 8r2)
END

View File

@@ -0,0 +1,3 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT ("x" /= "a")
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 12;
LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12;
SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12;
ASSERT (13 /= i);
ASSERT (ii NE LONG 13);
ASSERT (iii /= LONG LONG 13);
ASSERT (s /= SHORT 13);
ASSERT (ss /= SHORT SHORT 13)
END

View File

@@ -0,0 +1,15 @@
# { dg-options "-fstropping=upper" } #
BEGIN STRING foo = "foo", bar = "bar", quux = "quux";
# /= #
ASSERT (NOT ("" /= ""));
ASSERT (NOT ("foo" /= foo));
ASSERT (foo /= bar);
ASSERT (foo /= quux);
ASSERT (quux /= foo);
# NE #
ASSERT (NOT ("" NE ""));
ASSERT (NOT ("foo" NE foo));
ASSERT (foo NE bar);
ASSERT (foo NE quux);
ASSERT (quux NE foo)
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 10;
LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10;
SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10;
ASSERT (-i = -10);
ASSERT (-ii = - LONG 10);
ASSERT (-iii = - LONG LONG 10);
ASSERT (-ss = - SHORT 10);
ASSERT (-sss = - SHORT SHORT 10)
END

View File

@@ -0,0 +1,13 @@
# { dg-options "-fstropping=upper" } #
# NOT for SIZETY BITS. #
BEGIN BITS b = 16rf0f0;
ASSERT ((NOT b AND 16rffff) = 16r0f0f);
LONG BITS bb = LONG 16rf0f0;
ASSERT ((NOT bb AND LONG 16rffff) = LONG 16r0f0f);
LONG LONG BITS bbb = LONG LONG 16rf0f0;
ASSERT ((NOT bbb AND LONG LONG 16rffff) = LONG LONG 16r0f0f);
SHORT BITS ss = SHORT 16rf0f0;
ASSERT ((NOT ss AND SHORT 16rffff) = SHORT 16r0f0f);
SHORT SHORT BITS sss = SHORT SHORT 16rf0f0;
ASSERT ((NOT sss AND SHORT SHORT 16rffff) = SHORT SHORT 16r0f0f)
END

View File

@@ -0,0 +1,8 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT a = 1;
ASSERT (ODD a);
ASSERT (ODD LONG 3);
ASSERT (NOT ODD LONG LONG 4);
ASSERT (ODD SHORT 3);
ASSERT (NOT ODD SHORT SHORT 4)
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN OP ONEOVER = (REAL a) REAL: 1/a;
REAL x;
x := ONEOVER 3.14
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN OP + = (INT a, b) INT: a - -b;
ASSERT (10 + 30 = 40)
END

View File

@@ -0,0 +1,9 @@
# { dg-options "-fstropping=upper" } #
BEGIN OP MIN = (REAL a, b) REAL: (a < b | a | b),
MIN = (INT a, REAL b) REAL: (a < b | a | b),
MIN = (REAL a, INT b) REAL: a MIN REAL (b);
PRIO MIN = 6;
ASSERT (10.0 MIN 20.0 > 9.9 AND 10.0 MIN 20.0 < 10.1);
ASSERT (10.0 MIN 100 > 9.9 AND 10.0 MIN 100 < 10.1);
ASSERT (100.0 MIN 10 > 9.9 AND 100.0 MIN 10 < 10.1)
END

View File

@@ -0,0 +1,13 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT n = 10;
# Note that the priority for the monadic operators gets ignored. #
PRIO JORL = 6, JURL = 6, XXX = 6, YYY = 6;
OP(INT)INT JORL = (n > 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1),
JURL = (n <= 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1);
OP(INT,INT)INT XXX = (INT a, b) INT: a + b,
YYY = (n > 10 | (INT a,b) INT: a * b | (INT a,b) INT: a - b);
ASSERT (JORL 10 = 9);
ASSERT (JURL 10 = 11);
ASSERT (2 XXX 3 = 5);
ASSERT (2 YYY 3 = -1);
END

View File

@@ -0,0 +1,18 @@
# { dg-options "-fstropping=upper" } #
# OR for SIZETY BITS. #
BEGIN BITS b = 16rf0f0;
ASSERT ((b OR 16r0f0f) = 16rffff);
ASSERT ((b OR 16r00ff) = 16rf0ff);
LONG BITS bb = LONG 16rf0f0;
ASSERT ((bb OR LONG 16r0f0f) = LONG 16rffff);
ASSERT ((bb OR LONG 16r00ff) = LONG 16rf0ff);
LONG LONG BITS bbb = LONG LONG 16rf0f0;
ASSERT ((bbb OR LONG LONG 16r0f0f) = LONG LONG 16rffff);
ASSERT ((bbb OR LONG LONG 16r00ff) = LONG LONG 16rf0ff);
SHORT BITS ss = SHORT 16rf0f0;
ASSERT ((ss OR SHORT 16r0f0f) = SHORT 16rffff);
ASSERT ((ss OR SHORT 16r00ff) = SHORT 16rf0ff);
SHORT SHORT BITS sss = SHORT SHORT 16rf0f0;
ASSERT ((sss OR SHORT SHORT 16r0f0f) = SHORT SHORT 16rffff);
ASSERT ((sss OR SHORT SHORT 16r00ff) = SHORT SHORT 16rf0ff)
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i := 10;
ASSERT (i = 0 OREL i = 10)
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 10;
LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10;
SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10;
ASSERT (i % 2 = 5);
ASSERT (ii % LONG 2 = LONG 5);
ASSERT (iii % LONG LONG 2 = LONG LONG 5);
ASSERT (ss % SHORT 2 = SHORT 5);
ASSERT (sss % SHORT SHORT 2 = SHORT SHORT 5)
END

View File

@@ -0,0 +1,12 @@
# { dg-options "-fstropping=upper" } #
BEGIN (INT i := 11; i OVERAB 2; ASSERT (i = 5));
(INT i := 11; i %:= 2; ASSERT (i = 5));
(SHORT INT i := SHORT 11; i OVERAB SHORT 2; ASSERT (i = SHORT 5));
(SHORT INT i := SHORT 11; i %:= SHORT 2; ASSERT (i = SHORT 5));
(SHORT SHORT INT i := SHORT SHORT 11; i OVERAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 5));
(SHORT SHORT INT i := SHORT SHORT 11; i %:= SHORT SHORT 2; ASSERT (i = SHORT SHORT 5));
(LONG INT i := LONG 11; i OVERAB LONG 2; ASSERT (i = LONG 5));
(LONG INT i := LONG 11; i %:= LONG 2; ASSERT (i = LONG 5));
(LONG LONG INT i := LONG LONG 11; i OVERAB LONG LONG 2; ASSERT (i = LONG LONG 5));
(LONG LONG INT i := LONG LONG 11; i %:= LONG LONG 2; ASSERT (i = LONG LONG 5))
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT n := 10;
(((n OVERAB 1))) := 5;
ASSERT (n = 5)
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
# Particular program with preceding labels. #
jo: ju:
BEGIN SKIP END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT ("a" + "b" = "ab");
ASSERT ("" + "x" = "x")
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 10;
LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10;
SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10;
ASSERT (i + 2 = 12);
ASSERT (ii + LONG 2 = LONG 12);
ASSERT (iii + LONG LONG 2 = LONG LONG 12);
ASSERT (ss + SHORT 2 = SHORT 12);
ASSERT (sss + SHORT SHORT 2 = SHORT SHORT 12)
END

View File

@@ -0,0 +1,11 @@
# { dg-options "-fstropping=upper" } #
BEGIN STRING foo = "foo", bar = "bar", quux = "quux";
ASSERT ("" + "" = "");
ASSERT ("" + foo = "foo");
ASSERT (bar + "" = "bar");
ASSERT (foo + bar = "foobar");
STRING res = foo + bar;
ASSERT (LWB res = 1 AND UPB res = 6);
STRING empty = "" + "";
ASSERT (LWB empty = 1 AND UPB empty = 0)
END

View File

@@ -0,0 +1,11 @@
# { dg-options "-fstropping=upper" } #
BEGIN PROC rec parse comment = VOID:
BEGIN STRING content;
done;
100;
done:
ASSERT (content + "x" = "x")
END;
rec parse comment
END

View File

@@ -0,0 +1,7 @@
# { dg-options "-fstropping=upper" } #
BEGIN [,]CHAR matrix = (("1","H","3"),
("4","O","6"),
("7","M","9"),
("8","E","2"));
ASSERT (matrix[1:2,1] + matrix[3:4,3] = "1492")
END

View File

@@ -0,0 +1,34 @@
# { dg-options "-fstropping=upper" } #
BEGIN BEGIN INT i := 10;
i +:= 2;
ASSERT (i = 12);
i PLUSAB 2;
ASSERT (i = 14)
END;
BEGIN SHORT INT i := SHORT 1000;
i +:= SHORT 100;
ASSERT (i = SHORT 1100);
i PLUSAB SHORT 100;
ASSERT (i = SHORT 1200)
END;
BEGIN SHORT SHORT INT i := SHORT SHORT 10000;
i +:= SHORT SHORT 1000;
ASSERT (i = SHORT SHORT 11000);
i PLUSAB SHORT SHORT 1000;
ASSERT (i = SHORT SHORT 12000)
END;
BEGIN LONG INT i := LONG 1000;
i +:= LONG 100;
ASSERT (i = LONG 1100);
i PLUSAB LONG 100;
ASSERT (i = LONG 1200)
END;
BEGIN LONG LONG INT i := LONG LONG 10000;
i +:= LONG LONG 1000;
ASSERT (i = LONG LONG 11000);
i PLUSAB LONG LONG 1000;
ASSERT (i = LONG LONG 12000)
END
END

View File

@@ -0,0 +1,20 @@
# { dg-options "-fstropping=upper" } #
BEGIN BEGIN REAL i := 10.0;
i +:= 2.0;
ASSERT (i > 11.9);
i PLUSAB 2.0;
ASSERT (i > 13.9)
END;
BEGIN LONG REAL i := LONG 1000.0;
i +:= LONG 100.0;
ASSERT (i > LONG 1099.9);
i PLUSAB LONG 100.0;
ASSERT (i > LONG 1199.9)
END;
BEGIN LONG LONG REAL i := LONG LONG 10000.0;
i +:= LONG LONG 1000.0;
ASSERT (i > LONG LONG 10999.9);
i PLUSAB LONG LONG 1000.0;
ASSERT (i > LONG LONG 11999.9)
END
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT n := 0;
(((n +:= 1))) := 5;
ASSERT (n = 5)
END

View File

@@ -0,0 +1,6 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT num ints := 0;
num ints +:= 1;
ASSERT (num ints = 1);
ASSERT ((LOC INT +:= 12) = 12)
END

View File

@@ -0,0 +1,7 @@
# { dg-options "-fstropping=upper" } #
BEGIN STRING foo := "";
foo +:= "foo";
ASSERT (LWB foo = 1 AND UPB foo = 3 AND foo = "foo");
foo PLUSAB "bar";
ASSERT (LWB foo = 1 AND UPB foo = 6 AND foo = "foobar")
END

View File

@@ -0,0 +1,7 @@
begin string foo := "foo";
char c := "x";
c PLUSTO foo;
assert (foo = "xfoo");
c +=: foo;
assert (foo = "xxfoo")
end

View File

@@ -0,0 +1,6 @@
begin string foo := "foo";
"bar" PLUSTO foo;
assert (foo = "barfoo");
"quux" +=: foo;
assert (foo = "quuxbarfoo")
end

View File

@@ -0,0 +1,7 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT (argc >= 1);
ASSERT (argv (1000) = "");
ASSERT (argv (-1) = "");
FOR i TO argc
DO puts (argv (i)) OD
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT fd = fopen ("doesn''t exist", file o default);
ASSERT (fd = -1)
END

View File

@@ -0,0 +1,8 @@
# { dg-options "-fstropping=upper" } #
BEGIN fputc (stdout, "X");
ASSERT (fputs (stdout, "foo") = 3);
fputs (stdout, fputc (stdout, "Y") + "T");
fputc (stdout, "Z");
ASSERT (fputs (stdout, "") = 0);
puts ("")
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT (getenv ("") = "");
ASSERT (getenv ("DOESNT EXIST FOR SURE") = "")
END

View File

@@ -0,0 +1,17 @@
begin int fd = fopen ("../../ga68", file_o_rdonly);
assert (fd /= -1);
assert (errno = 0);
long long int offset;
offset := lseek (fd, long long 0, seek_cur);
assert (offset = long long 0);
assert (errno = 0);
offset := lseek (fd, long long 0, seek_set);
assert (offset = long long 0);
assert (errno = 0);
offset := lseek (fd, long long 0, seek_end);
long long int offset2 = lseek (fd, offset, seek_set);
assert (offset = offset2);
long long int file_size = fsize (fd);
assert (errno = 0);
assert (offset = file_size)
end

View File

@@ -0,0 +1,8 @@
# { dg-options "-fstropping=upper" } #
# { dg-output "^something unique: " } #
BEGIN INT fd = fopen ("doesn''t exist", file o default);
IF fd = -1 THEN
ASSERT (strerror (errno) /= "");
perror ("something unique")
FI
END

View File

@@ -0,0 +1,6 @@
# { dg-options "-fstropping=upper" } #
BEGIN putchar ("X");
putchar ("Y");
putchar ("Z");
puts ("\n")
END

View File

@@ -0,0 +1,5 @@
# { dg-options "-fstropping=upper" } #
BEGIN ASSERT (stdin = 0);
ASSERT (stdout = 1);
ASSERT (stderr = 2)
END

View File

@@ -0,0 +1,4 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT fd = fopen ("doesn''t exist", file o default);
IF fd = -1 THEN ASSERT (strerror (errno) /= "") FI
END

View File

@@ -0,0 +1,14 @@
# { dg-options "-fstropping=upper" } #
BEGIN [,]CHAR matrix = (("1","H","3"),
("4","O","6"),
("7","M","9"),
("8","E","0"));
[]CHAR column = matrix[1:4,2];
puts (column);
fputs (stdout, matrix[3,2:3]);
puts ("\n");
fputs (stdout, matrix[1:3,1]);
puts ("\n");
puts (getenv (matrix[,2]));
perror (matrix[,3])
END

View File

@@ -0,0 +1,10 @@
# { dg-options "-fstropping=upper" } #
BEGIN INT i = 2;
LONG INT ii = LONG 2, LONG LONG INT iii = LONG LONG 2;
SHORT INT ss = SHORT 2, SHORT SHORT INT sss = SHORT SHORT 2;
ASSERT (i ** 2 = 4);
ASSERT (ii ** 2 = LONG 4);
ASSERT (iii ** 2 = LONG LONG 4);
ASSERT (ss ** 2 = SHORT 4);
ASSERT (sss ** 2 = SHORT SHORT 4)
END

View File

@@ -0,0 +1,7 @@
# { dg-options "-fstropping=upper" } #
BEGIN REAL r0 = 2.0; LONG REAL rr0 = LONG 2.0; LONG LONG REAL rrr0 = LONG LONG 2.0;
REAL r1 = r0 ^ 2; REAL r2 = r0 ^ 3.0;
LONG REAL rr1 = rr0 ^ LONG 2; LONG REAL rr2 = rr0 ^ LONG 3.0;
LONG LONG REAL rrr1 = rrr0 ^ LONG LONG 2; LONG LONG REAL rrr2 = rrr0 ^ LONG LONG 3.0;
SKIP
END

Some files were not shown because too many files have changed in this diff Show More