This commit fixes the asserts in a68_loer_char_mult3 so it expects
either int*char or char*int.  It also expands the mult-char-1.a68
testcase to cover this case.

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

gcc/algol68/ChangeLog

        * a68-low-prelude.cc (a68_lower_char_mult3): Fix asserts.

gcc/testsuite/ChangeLog

        * algol68/execute/mult-char-1.a68: Cover int*char cases.
---
 gcc/algol68/a68-low-prelude.cc                | 2 +-
 gcc/testsuite/algol68/execute/mult-char-1.a68 | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/gcc/algol68/a68-low-prelude.cc b/gcc/algol68/a68-low-prelude.cc
index 55c0895bec5..bd54b207fbe 100644
--- a/gcc/algol68/a68-low-prelude.cc
+++ b/gcc/algol68/a68-low-prelude.cc
@@ -944,7 +944,7 @@ a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx)
 
   if (MOID (n1) == M_INT)
     {
-      gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR);
+      gcc_assert (MOID (n2) == M_CHAR);
       return a68_string_mult (a68_string_from_char (a68_lower_tree (n2, ctx)),
                              a68_lower_tree (n1, ctx));
     }
diff --git a/gcc/testsuite/algol68/execute/mult-char-1.a68 
b/gcc/testsuite/algol68/execute/mult-char-1.a68
index 0e3c1f4b93f..67af07323b4 100644
--- a/gcc/testsuite/algol68/execute/mult-char-1.a68
+++ b/gcc/testsuite/algol68/execute/mult-char-1.a68
@@ -1,5 +1,8 @@
 # { dg-options "-fstropping=upper" }  #
 BEGIN ASSERT ("a" * 3 = "aaa");
       ASSERT ("" * 1 = "");
-      ASSERT ("x" * 0 = "x")
+      ASSERT ("x" * 0 = "x");
+      ASSERT (3 * "a" = "aaa");
+      ASSERT (1 * "" = "");
+      ASSERT (0 * "x" = "x")
 END
-- 
2.30.2

Reply via email to