From: Anders Carlsson Date: Tue, 2 Mar 2010 05:40:45 +0000 (+0000) Subject: Simplify code. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=88800669c5523557ef3ecb158129d7be53257cc8;p=clang Simplify code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97551 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGVtable.cpp b/lib/CodeGen/CGVtable.cpp index 50eed3ab81..ade5d3981e 100644 --- a/lib/CodeGen/CGVtable.cpp +++ b/lib/CodeGen/CGVtable.cpp @@ -860,7 +860,7 @@ class VCallAndVBaseOffsetBuilder { void AddVCallOffsets(BaseSubobject Base, uint64_t VBaseOffset); /// AddVBaseOffsets - Add vbase offsets for the given class. - void AddVBaseOffsets(const CXXRecordDecl *Base, int64_t OffsetToTop); + void AddVBaseOffsets(const CXXRecordDecl *Base, uint64_t OffsetInLayoutClass); public: VCallAndVBaseOffsetBuilder(const CXXRecordDecl *MostDerivedClass, @@ -924,9 +924,7 @@ VCallAndVBaseOffsetBuilder::AddVCallAndVBaseOffsets(BaseSubobject Base, PrimaryBaseIsVirtual, RealBaseOffset); } - // FIXME: Don't use /8 here. - int64_t OffsetToTop = -(int64_t)RealBaseOffset / 8; - AddVBaseOffsets(Base.getBase(), OffsetToTop); + AddVBaseOffsets(Base.getBase(), RealBaseOffset); // We only want to add vcall offsets for virtual bases. if (BaseIsVirtual) @@ -1025,7 +1023,7 @@ void VCallAndVBaseOffsetBuilder::AddVCallOffsets(BaseSubobject Base, } void VCallAndVBaseOffsetBuilder::AddVBaseOffsets(const CXXRecordDecl *RD, - int64_t OffsetToTop) { + uint64_t OffsetInLayoutClass) { const ASTRecordLayout &LayoutClassLayout = Context.getASTRecordLayout(LayoutClass); @@ -1038,14 +1036,15 @@ void VCallAndVBaseOffsetBuilder::AddVBaseOffsets(const CXXRecordDecl *RD, // Check if this is a virtual base that we haven't visited before. if (I->isVirtual() && VisitedVirtualBases.insert(BaseDecl)) { // FIXME: We shouldn't use / 8 here. - uint64_t Offset = - OffsetToTop + LayoutClassLayout.getVBaseClassOffset(BaseDecl) / 8; + int64_t Offset = + (int64_t)(LayoutClassLayout.getVBaseClassOffset(BaseDecl) - + OffsetInLayoutClass) / 8; Components.push_back(VtableComponent::MakeVBaseOffset(Offset)); } // Check the base class looking for more vbase offsets. - AddVBaseOffsets(BaseDecl, OffsetToTop); + AddVBaseOffsets(BaseDecl, OffsetInLayoutClass); } }