rnk added inline comments.
================ Comment at: clang/lib/AST/MicrosoftMangle.cpp:819-823 ArgBackRefMap::iterator Found = TemplateArgBackReferences.find(ND); if (Found == TemplateArgBackReferences.end()) { - // Mangle full template name into temporary buffer. - llvm::SmallString<64> TemplateMangling; - llvm::raw_svector_ostream Stream(TemplateMangling); - MicrosoftCXXNameMangler Extra(Context, Stream); - Extra.mangleTemplateInstantiationName(TD, *TemplateArgs); - - // Use the string backref vector to possibly get a back reference. - mangleSourceName(TemplateMangling); - - // Memoize back reference for this type. - BackRefVec::iterator StringFound = - llvm::find(NameBackReferences, TemplateMangling); - if (StringFound != NameBackReferences.end()) { - TemplateArgBackReferences[ND] = - StringFound - NameBackReferences.begin(); + + TemplateArgStringMap::iterator Found = TemplateArgStrings.find(ND); + if (Found == TemplateArgStrings.end()) { ---------------- Here's a thought: could we get by with one map? I think we can be certain that nothing mangles to integer literals between 0 and 9, since otherwise the demangler couldn't distinguish those from back references. So, can we keep the string map, and insert the string "0", "1", etc for back referenced things? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D62780/new/ https://reviews.llvm.org/D62780 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits