diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-21 09:06:31 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-21 09:06:31 +0000 |
commit | 4118ec557183bc15594f8a5f4bef5a6284a1f529 (patch) | |
tree | 0b6b8dad4ec857fec235542444d494ac0d2a0b6b /clang/lib | |
parent | e128dd18ab472003fd9df2966de7b168892f91a8 (diff) | |
download | bcm5719-llvm-4118ec557183bc15594f8a5f4bef5a6284a1f529.tar.gz bcm5719-llvm-4118ec557183bc15594f8a5f4bef5a6284a1f529.zip |
IRgen: Eliminate CXXNameMangler::mangleCXX{C,D}tor.
llvm-svn: 89549
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index d03761ea243..377b7f421d7 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -43,6 +43,12 @@ class VISIBILITY_HIDDEN CXXNameMangler { public: CXXNameMangler(MangleContext &C, llvm::SmallVectorImpl<char> &Res) : Context(C), Out(Res), Structor(0), StructorType(0) { } + CXXNameMangler(MangleContext &C, llvm::SmallVectorImpl<char> &Res, + const CXXConstructorDecl *D, CXXCtorType Type) + : Context(C), Out(Res), Structor(D), StructorType(Type) { } + CXXNameMangler(MangleContext &C, llvm::SmallVectorImpl<char> &Res, + const CXXDestructorDecl *D, CXXDtorType Type) + : Context(C), Out(Res), Structor(D), StructorType(Type) { } bool mangle(const NamedDecl *D); void mangleCalloffset(int64_t nv, int64_t v); @@ -58,8 +64,6 @@ class VISIBILITY_HIDDEN CXXNameMangler { const CXXRecordDecl *Type); void mangleCXXRtti(QualType Ty); void mangleCXXRttiName(QualType Ty); - void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type); - void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type); private: bool mangleSubstitution(const NamedDecl *ND); @@ -190,24 +194,6 @@ bool CXXNameMangler::mangle(const NamedDecl *D) { return false; } -void CXXNameMangler::mangleCXXCtor(const CXXConstructorDecl *D, - CXXCtorType Type) { - assert(!Structor && "Structor already set!"); - Structor = D; - StructorType = Type; - - mangle(D); -} - -void CXXNameMangler::mangleCXXDtor(const CXXDestructorDecl *D, - CXXDtorType Type) { - assert(!Structor && "Structor already set!"); - Structor = D; - StructorType = Type; - - mangle(D); -} - void CXXNameMangler::mangleCXXVtable(const CXXRecordDecl *RD) { // <special-name> ::= TV <type> # virtual table Out << "_ZTV"; @@ -1437,14 +1423,14 @@ void MangleContext::mangleGuardVariable(const VarDecl *D, void MangleContext::mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type, llvm::SmallVectorImpl<char> &Res) { - CXXNameMangler Mangler(*this, Res); - Mangler.mangleCXXCtor(D, Type); + CXXNameMangler Mangler(*this, Res, D, Type); + Mangler.mangle(D); } void MangleContext::mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type, llvm::SmallVectorImpl<char> &Res) { - CXXNameMangler Mangler(*this, Res); - Mangler.mangleCXXDtor(D, Type); + CXXNameMangler Mangler(*this, Res, D, Type); + Mangler.mangle(D); } void MangleContext::mangleCXXVtable(const CXXRecordDecl *RD, |