From dabfa3cd8be6e2881f6a46e2b230f4356c2e5527 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Thu, 3 Dec 2009 03:28:24 +0000 Subject: [PATCH] Revert r90402 for now, virt.cpp is failing. llvm-svn: 90406 --- clang/lib/CodeGen/CGVtable.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/clang/lib/CodeGen/CGVtable.cpp b/clang/lib/CodeGen/CGVtable.cpp index caac82701664..007960e9983f 100644 --- a/clang/lib/CodeGen/CGVtable.cpp +++ b/clang/lib/CodeGen/CGVtable.cpp @@ -274,20 +274,18 @@ public: Thunks.erase(i); } - - QualType BaseType = QualType(Thunk.ReturnType)->getPointeeType(); - QualType DerivedType = - MD->getType()->getAs()->getResultType()->getPointeeType(); - - const CXXRecordDecl *BaseDecl = - cast(BaseType->getAs()->getDecl()); - - const CXXRecordDecl *DerivedDecl = - cast(DerivedType->getAs()->getDecl()); // Construct the return adjustment. - ThunkAdjustment ReturnAdjustment = - CGM.ComputeThunkAdjustment(DerivedDecl, BaseDecl); + QualType DerivedType = + MD->getType()->getAs()->getResultType(); + + int64_t NonVirtualAdjustment = + getNVOffset(Thunk.ReturnType, DerivedType) / 8; + + int64_t VirtualAdjustment = + getVbaseOffset(Thunk.ReturnType, DerivedType); + + ThunkAdjustment ReturnAdjustment(NonVirtualAdjustment, VirtualAdjustment); CovariantThunkAdjustment Adjustment(ThisAdjustment, ReturnAdjustment); submethods[Index] = CGM.BuildCovariantThunk(MD, Extern, Adjustment); @@ -747,7 +745,7 @@ TypeConversionRequiresAdjustment(ASTContext &Ctx, } const CXXRecordDecl *DerivedDecl = - cast(cast(CanDerivedType)->getDecl()); + cast(cast(CanDerivedType)->getDecl()); const CXXRecordDecl *BaseDecl = cast(cast(CanBaseType)->getDecl());