IRgen: Eliminate CXXNameMangler::mangleCXX{C,D}tor.

llvm-svn: 89549
This commit is contained in:
Daniel Dunbar 2009-11-21 09:06:31 +00:00
parent e128dd18ab
commit 4118ec5571
1 changed files with 10 additions and 24 deletions

View File

@ -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,