diff options
Diffstat (limited to 'lib/CodeGen/CGClass.cpp')
-rw-r--r-- | lib/CodeGen/CGClass.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/CodeGen/CGClass.cpp b/lib/CodeGen/CGClass.cpp index ebc8442353..d5ecd9f97e 100644 --- a/lib/CodeGen/CGClass.cpp +++ b/lib/CodeGen/CGClass.cpp @@ -41,7 +41,7 @@ ComputeNonVirtualBaseClassOffset(ASTContext &Context, cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl()); // Add the offset. - Offset += Layout.getBaseClassOffset(BaseDecl); + Offset += Layout.getBaseClassOffsetInBits(BaseDecl); RD = BaseDecl; } @@ -87,9 +87,9 @@ CodeGenFunction::GetAddressOfDirectBaseInCompleteClass(llvm::Value *This, uint64_t Offset; const ASTRecordLayout &Layout = getContext().getASTRecordLayout(Derived); if (BaseIsVirtual) - Offset = Layout.getVBaseClassOffset(Base); + Offset = Layout.getVBaseClassOffsetInBits(Base); else - Offset = Layout.getBaseClassOffset(Base); + Offset = Layout.getBaseClassOffsetInBits(Base); // Shift and cast down to the base type. // TODO: for complete types, this should be possible with a GEP. @@ -295,7 +295,8 @@ static llvm::Value *GetVTTParameter(CodeGenFunction &CGF, GlobalDecl GD, const ASTRecordLayout &Layout = CGF.getContext().getASTRecordLayout(RD); uint64_t BaseOffset = ForVirtualBase ? - Layout.getVBaseClassOffset(Base) : Layout.getBaseClassOffset(Base); + Layout.getVBaseClassOffsetInBits(Base) : + Layout.getBaseClassOffsetInBits(Base); SubVTTIndex = CGF.CGM.getVTables().getSubVTTIndex(RD, BaseSubobject(Base, BaseOffset)); @@ -1355,15 +1356,16 @@ CodeGenFunction::InitializeVTablePointers(BaseSubobject Base, const ASTRecordLayout &Layout = getContext().getASTRecordLayout(VTableClass); - BaseOffset = Layout.getVBaseClassOffset(BaseDecl); + BaseOffset = Layout.getVBaseClassOffsetInBits(BaseDecl); BaseOffsetFromNearestVBase = 0; BaseDeclIsNonVirtualPrimaryBase = false; } else { const ASTRecordLayout &Layout = getContext().getASTRecordLayout(RD); - BaseOffset = Base.getBaseOffset() + Layout.getBaseClassOffset(BaseDecl); + BaseOffset = + Base.getBaseOffset() + Layout.getBaseClassOffsetInBits(BaseDecl); BaseOffsetFromNearestVBase = - OffsetFromNearestVBase + Layout.getBaseClassOffset(BaseDecl); + OffsetFromNearestVBase + Layout.getBaseClassOffsetInBits(BaseDecl); BaseDeclIsNonVirtualPrimaryBase = Layout.getPrimaryBase() == BaseDecl; } |