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

            Bug ID: 119025
           Summary: libiberty fails demangling some template function
                    names
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ofekshilon at gmail dot com
  Target Milestone: ---

[Migrated from binutils issue
https://sourceware.org/bugzilla/show_bug.cgi?id=32408]

`fun` from this c++ snippet:
```
#include <cstdio>
#include <concepts>

template <std::integral I>
void fun(I i)
{
    std::puts("foo<std::integral>()");
}
```

is mangled by gcc to `_Z3funITkSt8integralcEvT_`, and c++filt fails to demangle
it:

   $ c++filt _Z3funITkSt8integralcEvT_
   _Z3funITkSt8integralcEvT_


As another variation, when such a template is a specialization of a more
general one - the mangled name has an additional suffix
(_Z3funITkSt8integralcEvT_.isra.0) - and c++filt fails to demangle it too.
Here: https://godbolt.org/z/4jMKqjcnc

According to an initial investigation on the binutils side, the root cause is
within libiberty itself.

Reply via email to