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

Reply via email to