https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82724
--- Comment #3 from Paul Robinson <paul_robinson at playstation dot sony.com> --- Admittedly the function parameter analogy is a bit of a stretch. Making consumers parse names on the off chance they contain semantically significant information seems like a bit much, though. Especially if they contain information in a ridiculous variety of spellings. Never mind things like "Y" versus "(X)0u" you also have "const int" versus "int const" and all the other very-large-number variations. For another thing, names are off in that other section over there, instead of right here in the .debug_info section with all the other stuff, and all the thrashing around across sections makes loading slower. I had a long harangue from Greg Clayton about this a year ago at the LLVM Dev Meeting. (Slow loading in general that is; not specifically about template children.) My guess is, this is a case where gcc omitted some stuff, and gdb had to cope as an engineering compromise, because that's what was in actual object files that users had. This has nothing to do with whether the DWARF as produced is either correct or a good idea. I think it's neither. I'd prefer that both clang and gcc produce DWARF that is inarguably correct and easier for consumers to deal with. For whatever that's worth.