diff options
author | Anders Carlsson <andersca@mac.com> | 2009-09-17 04:16:28 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-09-17 04:16:28 +0000 |
commit | 4245bf9e13c2f3ce8b2b5f74debb81d636ef4f37 (patch) | |
tree | c4335e3313e7adb5c41ea0e83806d9e03a69219c /clang/lib/CodeGen/Mangle.cpp | |
parent | 90332b8db470349388da1ff4bcde82fdc37e6439 (diff) | |
download | bcm5719-llvm-4245bf9e13c2f3ce8b2b5f74debb81d636ef4f37.tar.gz bcm5719-llvm-4245bf9e13c2f3ce8b2b5f74debb81d636ef4f37.zip |
Substitution for prefixes.
llvm-svn: 82122
Diffstat (limited to 'clang/lib/CodeGen/Mangle.cpp')
-rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index 9b5fd74ad51..8241ad61d07 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -55,9 +55,7 @@ namespace { void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type); private: - bool mangleSubstitution(const NamedDecl *ND) { - return mangleSubstitution(reinterpret_cast<uintptr_t>(ND)); - } + bool mangleSubstitution(const NamedDecl *ND); bool mangleSubstitution(QualType T); bool mangleSubstitution(uintptr_t Ptr); @@ -432,6 +430,10 @@ void CXXNameMangler::manglePrefix(const DeclContext *DC) { // ::= # empty // ::= <substitution> // FIXME: We only handle mangling of namespaces and classes at the moment. + + if (mangleSubstitution(cast<NamedDecl>(DC))) + return; + if (!DC->getParent()->isTranslationUnit()) manglePrefix(DC->getParent()); @@ -444,6 +446,8 @@ void CXXNameMangler::manglePrefix(const DeclContext *DC) { } else mangleSourceName(Record->getIdentifier()); } + + addSubstitution(cast<NamedDecl>(DC)); } void @@ -922,6 +926,11 @@ void CXXNameMangler::mangleTemplateArgument(const TemplateArgument &A) { // <substitution> ::= S <seq-id> _ // ::= S_ + +bool CXXNameMangler::mangleSubstitution(const NamedDecl *ND) { + return mangleSubstitution(reinterpret_cast<uintptr_t>(ND)); +} + bool CXXNameMangler::mangleSubstitution(QualType T) { uintptr_t TypePtr = reinterpret_cast<uintptr_t>(T.getAsOpaquePtr()); |