]> granicus.if.org Git - clang/commitdiff
Add function for mangling reference temporaries.
authorAnders Carlsson <andersca@mac.com>
Sat, 26 Jun 2010 16:09:40 +0000 (16:09 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 26 Jun 2010 16:09:40 +0000 (16:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106948 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/Mangle.cpp
lib/CodeGen/Mangle.h

index 154153aaebfa6a98ac5c199c1c19d2c1e16f3b80..ac962247fd0ac5054f9d5803edd93ea1836de67b 100644 (file)
@@ -2253,6 +2253,15 @@ void MangleContext::mangleGuardVariable(const VarDecl *D,
   Mangler.mangleName(D);
 }
 
+void MangleContext::mangleReferenceTemporary(const VarDecl *D,
+                                             llvm::SmallVectorImpl<char> &Res) {
+  // We match the GCC mangling here.
+  //  <special-name> ::= GR <object name>
+  CXXNameMangler Mangler(*this, Res);
+  Mangler.getStream() << "_ZGR";
+  Mangler.mangleName(D);
+}
+
 void MangleContext::mangleCXXVTable(const CXXRecordDecl *RD,
                                     llvm::SmallVectorImpl<char> &Res) {
   // <special-name> ::= TV <type>  # virtual table
index ec575cc7867fd0c9874fd98c1b82c7aef110d101..139f6c0377ec44f22edb351574d717ddf1ac8cbf 100644 (file)
@@ -121,6 +121,8 @@ public:
                                   llvm::SmallVectorImpl<char> &);
   virtual void mangleGuardVariable(const VarDecl *D,
                                    llvm::SmallVectorImpl<char> &);
+  virtual void mangleReferenceTemporary(const VarDecl *D,
+                                        llvm::SmallVectorImpl<char> &);
   virtual void mangleCXXVTable(const CXXRecordDecl *RD,
                                llvm::SmallVectorImpl<char> &);
   virtual void mangleCXXVTT(const CXXRecordDecl *RD,