thakis marked an inline comment as done. thakis 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()) { ---------------- rnk wrote: > 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? I had wondered too. In the end, I figured the int map needs less memory and is almost always enough, so I went with this approach. 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