]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
a68: fix error handling in top-down parser
authorJose E. Marchesi <jose.marchesi@oracle.com>
Sat, 27 Dec 2025 18:54:20 +0000 (19:54 +0100)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Sat, 27 Dec 2025 18:54:20 +0000 (19:54 +0100)
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/algol68/ChangeLog

* a68-parser-top-down.cc (a68_top_down_parser): Stop parsing after
longjump.

gcc/testsuite/ChangeLog

* algol68/compile/error-loop-1.a68: New test.

gcc/algol68/a68-parser-top-down.cc
gcc/testsuite/algol68/compile/error-loop-1.a68 [new file with mode: 0644]

index e4a3bf8c854a4a2b03e059f249d251293ecfbcf4..4a79e58217a3e0fc4692732bcc8c1b85f6b16e17 100644 (file)
@@ -891,9 +891,9 @@ a68_top_down_parser (NODE_T *p)
        (void) top_down_prelude_packet (p);
       else
        (void) top_down_particular_program (p);
-    }
 
-  top_down_loops (p);
-  top_down_formats (p);
-  top_down_access (p);
+      top_down_loops (p);
+      top_down_formats (p);
+      top_down_access (p);
+    }
 }
diff --git a/gcc/testsuite/algol68/compile/error-loop-1.a68 b/gcc/testsuite/algol68/compile/error-loop-1.a68
new file mode 100644 (file)
index 0000000..bc3b2e2
--- /dev/null
@@ -0,0 +1 @@
+from i from 1 to 10 do skip od { dg-error "" }