[llvm] [dsymutil] Fix ODR type uniquing for -gsimple-template-names (PR #194501)
Jonas Devlieghere via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 28 07:37:37 PDT 2026
================
@@ -88,10 +146,22 @@ DeclContextTree::getChildDeclContext(DeclContext &Context, const DWARFDie &DIE,
StringRef NameForUniquing;
StringRef FileRef;
- if (const char *LinkageName = DIE.getLinkageName())
+ if (const char *LinkageName = DIE.getLinkageName()) {
NameForUniquing = StringPool.internString(LinkageName);
- else if (!Name.empty())
- NameForUniquing = StringPool.internString(Name);
+ } else if (!Name.empty()) {
+ // With -gsimple-template-names, DW_AT_name omits template parameters
+ // ("vector" instead of "vector<int>"). Reconstruct them from child
+ // DW_TAG_template_*_parameter DIEs so different specializations get
+ // distinct uniquing names.
+ // This heuristic would also (incorrectly) match names like "operator>" but
+ // those are subprograms with linkage names handled above.
----------------
JDevlieghere wrote:
Good idea
https://github.com/llvm/llvm-project/pull/194501
More information about the llvm-commits
mailing list