[gcc r16-9340] a68: fix typo in a68_demangle_symbol

"Jose E. Marchesi via Gcc-cvs" <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:b8295266b7a2bcc36870139969f9a3d91bfff0e9

commit r16-9340-gb8295266b7a2bcc36870139969f9a3d91bfff0e9
Author: Jose E. Marchesi <[email protected]>
Date:   Sun Jun 14 00:27:45 2026 +0200

    a68: fix typo in a68_demangle_symbol
    
    Signed-off-by: Jose E. Marchesi <[email protected]>
    
    gcc/algol68/ChangeLog
    
            * a68-low.cc (a68_demangle_symbol): Fix typo, 'p' is the mangling
            of '%', not of '+'.
    
    gcc/testsuite/ChangeLog
    
            * algol68/execute/modules/module1.a68: Add an operator %.
            * algol68/execute/modules/program-1.a68: Use operator %.
    
    (cherry picked from commit 66fad1a77fa71fe4a81f50f117c93c829d39558b)

Diff:
---
 gcc/algol68/a68-low.cc                              | 2 +-
 gcc/testsuite/algol68/execute/modules/module1.a68   | 2 ++
 gcc/testsuite/algol68/execute/modules/program-1.a68 | 3 +++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/algol68/a68-low.cc b/gcc/algol68/a68-low.cc
index 83c740cc774c..de7f21dc9108 100644
--- a/gcc/algol68/a68-low.cc
+++ b/gcc/algol68/a68-low.cc
@@ -207,7 +207,7 @@ a68_demangle_symbol (const char *mname, const char *symbol,
 	{
 	  switch (symbol[i])
 	    {
-	    case 'p': demangled[o++] = '+'; break;
+	    case 'p': demangled[o++] = '%'; break;
 	    case 'c': demangled[o++] = '^'; break;
 	    case 'a': demangled[o++] = '&'; break;
 	    case 'u': demangled[o++] = '+'; break;
diff --git a/gcc/testsuite/algol68/execute/modules/module1.a68 b/gcc/testsuite/algol68/execute/modules/module1.a68
index 7fad6e54cf70..c3e249710b86 100644
--- a/gcc/testsuite/algol68/execute/modules/module1.a68
+++ b/gcc/testsuite/algol68/execute/modules/module1.a68
@@ -3,6 +3,8 @@ def
     pub mode MyInt = int, MyOtherInt = int;
     pub int beast_number := 666, angelic_number := 777;
     pub string who = "jemarch", whoelse = "pietro";
+    pub mode SomeStruct = struct (int a,b);
+    pub op % = (SomeStruct a,b) SomeStruct: (10, 20);
     puts ("Hello from module'n")
 postlude
     puts ("Bye from module'n")
diff --git a/gcc/testsuite/algol68/execute/modules/program-1.a68 b/gcc/testsuite/algol68/execute/modules/program-1.a68
index 4b3616b743e3..ccff2a0f5988 100644
--- a/gcc/testsuite/algol68/execute/modules/program-1.a68
+++ b/gcc/testsuite/algol68/execute/modules/program-1.a68
@@ -15,6 +15,9 @@ begin string je = access Module1 begin who end;
       assert (aa = "jemarch");
       assert (bb = "jemarch");
       assert (cc = "jemarch");
+      SomeStruct u,v;
+      SomeStruct z = u%v;
+      assert (a'z = 10 AND b'z = 20);
       access Module1 to 1 do assert (who = "jemarch" AND whoelse = "pietro") od;
       access Module1 (assert (beast_number = 666 AND angelic_number = 777));
       access Module1 (MyInt a = 1; MyOtherInt b = 1; assert (a + b = 2))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.