From 4118ec557183bc15594f8a5f4bef5a6284a1f529 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 21 Nov 2009 09:06:31 +0000 Subject: [PATCH] IRgen: Eliminate CXXNameMangler::mangleCXX{C,D}tor. llvm-svn: 89549 --- clang/lib/CodeGen/Mangle.cpp | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index d03761ea2431..377b7f421d7d 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 &Res) : Context(C), Out(Res), Structor(0), StructorType(0) { } + CXXNameMangler(MangleContext &C, llvm::SmallVectorImpl &Res, + const CXXConstructorDecl *D, CXXCtorType Type) + : Context(C), Out(Res), Structor(D), StructorType(Type) { } + CXXNameMangler(MangleContext &C, llvm::SmallVectorImpl &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) { // ::= TV # virtual table Out << "_ZTV"; @@ -1437,14 +1423,14 @@ void MangleContext::mangleGuardVariable(const VarDecl *D, void MangleContext::mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type, llvm::SmallVectorImpl &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 &Res) { - CXXNameMangler Mangler(*this, Res); - Mangler.mangleCXXDtor(D, Type); + CXXNameMangler Mangler(*this, Res, D, Type); + Mangler.mangle(D); } void MangleContext::mangleCXXVtable(const CXXRecordDecl *RD,