https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81932
--- Comment #25 from Paul Smith <psmith at gnu dot org> --- > (1) Find the mangled name of the vtable of tv. > (2) Demangle the name, to be 'vtable for TreeVector<Pod, 2u>::Tree'. > (3) Skip 'vtable for ' and get 'TreeVector<Pod, 2u>::Tree'. > (4) Lookup this symbol. Right, and this is my concern: how many different types of symbol modifications are we going to expect GDB to attempt? Massaging this type to all its different equivalent types and then attempting to look them up seems pretty inefficient. I'm not familiar at all with the implementation but I'm not sure I see why we can't just ensure that the symbol values provided match identically to the de-mangled names, so we always know that we can demangle the name then look up the symbol. I also filed a bug against GDB (mentioned above) which is similar: in that case the demangled name contained the default value for a defaulted template argument, but the actual symbol provided didn't contain that default: again the lookup didn't match. How can GDB know that this argument is the default and it should try removing that argument and looking up the symbol without it?