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

            Bug ID: 86152
           Summary: Failure to demange clone names with digits
           Product: gcc
           Version: 8.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: demangler
          Assignee: unassigned at gcc dot gnu.org
          Reporter: terra at gnome dot org
  Target Milestone: ---

See https://sourceware.org/bugzilla/show_bug.cgi?id=23283
which is the same issue filed for gdb.

There is a patch over there too.

The demangler fails to demangle the symbol names that gcc generates
when using, e.g., __attribute__((target("avx2"))).  The trigger of
the problem is the digit.

welinder@dicentra:~> echo _Z3foov.avx2 | c++filt 
_Z3foov.avx2
welinder@dicentra:~> echo _Z3foov.avx | c++filt 
foo() [clone .avx]
welinder@dicentra:~> echo _Z3foov.mooooo | c++filt 
foo() [clone .mooooo]
welinder@dicentra:~> echo _Z3foov.mooooo2 | c++filt 
_Z3foov.mooooo2

Sample code that triggers the problem is below.  Only the default and avx
versions are demangled correctly.  This affects breakpoints in gdb.

__attribute__((target("default"))) inline int foo() { return 0; }
__attribute__((target("sse2")))    inline int foo() { return 1; }
__attribute__((target("avx")))     inline int foo() { return 2; }
__attribute__((target("avx2")))    inline int foo() { return 3; }
__attribute__((target("avx512f"))) inline int foo() { return 4; }

Reply via email to