diff options
author | Anders Carlsson <andersca@mac.com> | 2010-03-02 05:40:45 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-03-02 05:40:45 +0000 |
commit | 88800669c5523557ef3ecb158129d7be53257cc8 (patch) | |
tree | 68dd9febd27794e9c3e445bcb2994777f684e40d | |
parent | d0b76ca10feefcfda5cb16698e50197e87a7d876 (diff) |
Simplify code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97551 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGVtable.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
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); } } |