diff options
author | Anders Carlsson <andersca@mac.com> | 2010-06-26 16:09:40 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-06-26 16:09:40 +0000 |
commit | 715edf293698f40e600df65e18e48c70a29fc98c (patch) | |
tree | 4297937157b887cdf0ef6b81b7fd8b9dc5cb9e53 /lib/CodeGen | |
parent | 3a0d41d29192ff42870310e33800939f4e34bb55 (diff) |
Add function for mangling reference temporaries.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106948 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/Mangle.cpp | 9 | ||||
-rw-r--r-- | lib/CodeGen/Mangle.h | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index 154153aaeb..ac962247fd 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -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 diff --git a/lib/CodeGen/Mangle.h b/lib/CodeGen/Mangle.h index ec575cc786..139f6c0377 100644 --- a/lib/CodeGen/Mangle.h +++ b/lib/CodeGen/Mangle.h @@ -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, |