Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.
llvm-svn: 117881
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user