https://gcc.gnu.org/g:66fad1a77fa71fe4a81f50f117c93c829d39558b

commit r17-1538-g66fad1a77fa71fe4a81f50f117c93c829d39558b
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 %.

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))

Reply via email to