Fix thinko, mangleCXXRtti should obviously take a QualType!

llvm-svn: 85565
This commit is contained in:
Anders Carlsson 2009-10-30 01:52:02 +00:00
parent 4246f00e0c
commit 958c9f8524
3 changed files with 6 additions and 8 deletions

View File

@ -23,8 +23,7 @@ llvm::Constant *CodeGenModule::GenerateRtti(const CXXRecordDecl *RD) {
llvm::SmallString<256> OutName; llvm::SmallString<256> OutName;
llvm::raw_svector_ostream Out(OutName); llvm::raw_svector_ostream Out(OutName);
mangleCXXRtti(getMangleContext(), mangleCXXRtti(getMangleContext(), Context.getTagDeclType(RD), Out);
Context.getTagDeclType(RD).getTypePtr(), Out);
llvm::GlobalVariable::LinkageTypes linktype; llvm::GlobalVariable::LinkageTypes linktype;
linktype = llvm::GlobalValue::WeakAnyLinkage; linktype = llvm::GlobalValue::WeakAnyLinkage;

View File

@ -53,7 +53,7 @@ namespace {
void mangleCXXVtable(const CXXRecordDecl *RD); void mangleCXXVtable(const CXXRecordDecl *RD);
void mangleCXXVTT(const CXXRecordDecl *RD); void mangleCXXVTT(const CXXRecordDecl *RD);
void mangleCXXRtti(const Type *Ty); void mangleCXXRtti(QualType Ty);
void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type); void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type);
void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type); void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type);
@ -212,12 +212,11 @@ void CXXNameMangler::mangleCXXVTT(const CXXRecordDecl *RD) {
mangleName(RD); mangleName(RD);
} }
void CXXNameMangler::mangleCXXRtti(const Type *Ty) { void CXXNameMangler::mangleCXXRtti(QualType Ty) {
// <special-name> ::= TI <type> # typeinfo structure // <special-name> ::= TI <type> # typeinfo structure
Out << "_ZTI"; Out << "_ZTI";
// FIXME: mangleType should probably take a const Type * instead. mangleType(Ty);
mangleType(QualType(Ty, 0));
} }
void CXXNameMangler::mangleGuardVariable(const VarDecl *D) { void CXXNameMangler::mangleGuardVariable(const VarDecl *D) {
@ -1434,7 +1433,7 @@ namespace clang {
os.flush(); os.flush();
} }
void mangleCXXRtti(MangleContext &Context, const Type *Ty, void mangleCXXRtti(MangleContext &Context, QualType Ty,
llvm::raw_ostream &os) { llvm::raw_ostream &os) {
CXXNameMangler Mangler(Context, os); CXXNameMangler Mangler(Context, os);
Mangler.mangleCXXRtti(Ty); Mangler.mangleCXXRtti(Ty);

View File

@ -67,7 +67,7 @@ namespace clang {
llvm::raw_ostream &os); llvm::raw_ostream &os);
void mangleCXXVTT(MangleContext &Context, const CXXRecordDecl *RD, void mangleCXXVTT(MangleContext &Context, const CXXRecordDecl *RD,
llvm::raw_ostream &os); llvm::raw_ostream &os);
void mangleCXXRtti(MangleContext &Context, const Type *T, void mangleCXXRtti(MangleContext &Context, QualType T,
llvm::raw_ostream &os); llvm::raw_ostream &os);
void mangleCXXCtor(MangleContext &Context, const CXXConstructorDecl *D, void mangleCXXCtor(MangleContext &Context, const CXXConstructorDecl *D,
CXXCtorType Type, llvm::raw_ostream &os); CXXCtorType Type, llvm::raw_ostream &os);