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.