Dump this-adjustments for destructors as well.

llvm-svn: 96660
This commit is contained in:
Anders Carlsson 2010-02-19 06:03:53 +00:00
parent 821095085b
commit 2d3d903872
1 changed files with 28 additions and 11 deletions

View File

@ -1552,22 +1552,39 @@ void VtableBuilder::dumpLayout(llvm::raw_ostream& Out) {
break;
}
case VtableComponent::CK_CompleteDtorPointer: {
case VtableComponent::CK_CompleteDtorPointer:
case VtableComponent::CK_DeletingDtorPointer: {
bool IsComplete =
Component.getKind() == VtableComponent::CK_CompleteDtorPointer;
const CXXDestructorDecl *DD = Component.getDestructorDecl();
Out << DD->getQualifiedNameAsString() << "() [complete]";
Out << DD->getQualifiedNameAsString();
if (IsComplete)
Out << "() [complete]";
else
Out << "() [deleting]";
if (DD->isPure())
Out << " [pure]";
break;
// If this destructor has a 'this' pointer adjustment, dump it.
if (NextThisAdjustmentIndex < ThisAdjustments.size() &&
ThisAdjustments[NextThisAdjustmentIndex].first == I) {
const ThisAdjustment Adjustment =
ThisAdjustments[NextThisAdjustmentIndex].second;
Out << "\n [this adjustment: ";
Out << Adjustment.NonVirtual << " non-virtual";
if (Adjustment.VCallOffsetOffset)
Out << ", " << Adjustment.VCallOffsetOffset << " vcall offset offset";
Out << ']';
NextThisAdjustmentIndex++;
}
case VtableComponent::CK_DeletingDtorPointer: {
const CXXDestructorDecl *DD = Component.getDestructorDecl();
Out << DD->getQualifiedNameAsString() << "() [deleting]";
if (DD->isPure())
Out << " [pure]";
break;
}