Function template names are not stored in the backref table, but non-template function names are. The general pattern seems to be that when you are demangling a symbol name, if the name starts with '?' it does not go into the backreference table, otherwise it does. Note that this even handles the general case of operator names (template or otherwise) not going into the back-reference table, anonymous namespaces not going into the backreference table, and perhaps other yet-to-be-supported kinds of names. It's important that we apply this check only for the *unqualified* portion of a name, and only for *symbol* names. For example, this does not apply to type names (such as class templates) and we need to make sure that these still do go into the backref table. There is still one remaining backreference test failure, and although the failure is likely related, this code is complex enough that I'd rather address it separately.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
LGTM
llvm/lib/Demangle/MicrosoftDemangle.cpp | ||
---|---|---|
1416 | (NBB & NBB_Simple) == 0 isn't too many more characters and looks less weird. |
llvm/lib/Demangle/MicrosoftDemangle.cpp | ||
---|---|---|
1416 | Er, that should be (NBB & NBB_Simple) != 0 |
(NBB & NBB_Simple) == 0 isn't too many more characters and looks less weird.