https://gcc.gnu.org/g:600b106d9bd3901bfbf3335124c57b1ad46d149d

commit r16-7273-g600b106d9bd3901bfbf3335124c57b1ad46d149d
Author: Iain Buclaw <[email protected]>
Date:   Wed Feb 4 00:21:32 2026 +0100

    a68: Fix ICE in a68_extract_indicants
    
    At the time a68_extract_indicants executes nothing guarantees that the
    module text following a module symbol is well formed.
    
    gcc/algol68/ChangeLog:
    
            * a68-parser-extract.cc (a68_extract_indicants): Don't call FORWARD 
if
            skip_module_text returns NO_NODE.
    
    gcc/testsuite/ChangeLog:
    
            * algol68/compile/error-module-definition-1.a68: New test.
            * algol68/compile/error-module-definition-2.a68: New test.

Diff:
---
 gcc/algol68/a68-parser-extract.cc                           | 5 ++++-
 gcc/testsuite/algol68/compile/error-module-definition-1.a68 | 1 +
 gcc/testsuite/algol68/compile/error-module-definition-2.a68 | 3 +++
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/algol68/a68-parser-extract.cc 
b/gcc/algol68/a68-parser-extract.cc
index 32a9933bd723..34199595856d 100644
--- a/gcc/algol68/a68-parser-extract.cc
+++ b/gcc/algol68/a68-parser-extract.cc
@@ -416,7 +416,10 @@ a68_extract_indicants (NODE_T *p)
                  else
                    {
                      q = skip_module_text (NEXT (q));
-                     FORWARD (q);
+                     if (q == NO_NODE)
+                       siga = false;
+                     else
+                       FORWARD (q);
                    }
                }
              else
diff --git a/gcc/testsuite/algol68/compile/error-module-definition-1.a68 
b/gcc/testsuite/algol68/compile/error-module-definition-1.a68
new file mode 100644
index 000000000000..bc763bd682ba
--- /dev/null
+++ b/gcc/testsuite/algol68/compile/error-module-definition-1.a68
@@ -0,0 +1 @@
+module Module = { dg-error "" }
diff --git a/gcc/testsuite/algol68/compile/error-module-definition-2.a68 
b/gcc/testsuite/algol68/compile/error-module-definition-2.a68
new file mode 100644
index 000000000000..d2ad87b5d6cb
--- /dev/null
+++ b/gcc/testsuite/algol68/compile/error-module-definition-2.a68
@@ -0,0 +1,3 @@
+module Module = { dg-error "" }
+begin
+end

Reply via email to