https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123811

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org

--- Comment #4 from Patrick Palka <ppalka at gcc dot gnu.org> ---
The straightforward patch:

diff --git a/gcc/cp/mangle.cc b/gcc/cp/mangle.cc
index de9e960c683c..3ca4e29822d8 100644
--- a/gcc/cp/mangle.cc
+++ b/gcc/cp/mangle.cc
@@ -1268,7 +1268,11 @@ write_nested_name (const tree decl)
     {
       /* Yes, use <template-prefix>.  */
       write_template_prefix (decl);
-      write_template_args (TI_ARGS (info));
+      /* As in write_name.  */
+      tree parms = (TREE_CODE (decl) == FUNCTION_DECL
+                   ? DECL_TEMPLATE_PARMS (TI_TEMPLATE (info))
+                   : NULL_TREE);
+      write_template_args (TI_ARGS (info), parms);
     }
   else if ((!abi_version_at_least (10) || TREE_CODE (decl) == TYPE_DECL)
           && TREE_CODE (TREE_TYPE (decl)) == TYPENAME_TYPE)

seems to fix things, but it causes abi/lambda-tpl1-18.C mangling to change for

  inline auto l_tpl_nt_auto = [] <auto I = 0> () {};

from _ZNK13l_tpl_nt_autoMUlTnDavE_clILi0EEEDav
to _ZNK13l_tpl_nt_autoMUlTnDavE_clITnDaLi0EEEDav

I have no idea what to make of that :(

Reply via email to