This function fixes the pack_soids_in_moid function so it never
returns a mode that has not been registered.

Signed-off-by: Jose E. Marchesi <[email protected]>

gcc/algol68/ChangeLog

        * a68-moids-misc.cc (a68_pack_soids_in_moid): Return the result of
        a68_register_extra_mode.

gcc/testsuite/ChangeLog

        * algol68/execute/pack-soids-in-moid-1.a68: New test.
---
 gcc/algol68/a68-moids-misc.cc                          | 4 ++--
 gcc/testsuite/algol68/execute/pack-soids-in-moid-1.a68 | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)
 create mode 100644 gcc/testsuite/algol68/execute/pack-soids-in-moid-1.a68

diff --git a/gcc/algol68/a68-moids-misc.cc b/gcc/algol68/a68-moids-misc.cc
index 349c13fd656..cafb04a16ad 100644
--- a/gcc/algol68/a68-moids-misc.cc
+++ b/gcc/algol68/a68-moids-misc.cc
@@ -280,8 +280,8 @@ a68_pack_soids_in_moid (SOID_T *top_sl, int attribute)
       *p = t;
       p = &NEXT (t);
     }
-  (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x);
-  return x;
+
+  return a68_register_extra_mode (&TOP_MOID (&A68_JOB), x);
 }
 
 /* Whether P is compatible with Q.  */
diff --git a/gcc/testsuite/algol68/execute/pack-soids-in-moid-1.a68 
b/gcc/testsuite/algol68/execute/pack-soids-in-moid-1.a68
new file mode 100644
index 00000000000..b5857088ef1
--- /dev/null
+++ b/gcc/testsuite/algol68/execute/pack-soids-in-moid-1.a68
@@ -0,0 +1,3 @@
+begin []int lele = (1,2,3);
+      assert (ELEMS (lele) = ELEMS (lele))
+end
-- 
2.30.2

Reply via email to