diff options
author | Ken Dyck <kd@kendyck.com> | 2011-03-24 01:21:01 +0000 |
---|---|---|
committer | Ken Dyck <kd@kendyck.com> | 2011-03-24 01:21:01 +0000 |
commit | 16ffcac1a2a35194695faa9f98c80cc21d7e6288 (patch) | |
tree | 6b1394aa78b60f5d5f70686f7962f862354aa915 /clang/lib/CodeGen/CGClass.cpp | |
parent | 1de8cc6f95061bdecdb2da268b89ed6ed0c2bd2c (diff) | |
download | bcm5719-llvm-16ffcac1a2a35194695faa9f98c80cc21d7e6288.tar.gz bcm5719-llvm-16ffcac1a2a35194695faa9f98c80cc21d7e6288.zip |
Convert the BaseOffset member of BaseSubobject to CharUnits from bits. No
change in functionality intended.
llvm-svn: 128190
Diffstat (limited to 'clang/lib/CodeGen/CGClass.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index 64b1615d7c8..b8525292485 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -305,9 +305,9 @@ static llvm::Value *GetVTTParameter(CodeGenFunction &CGF, GlobalDecl GD, } else { const ASTRecordLayout &Layout = CGF.getContext().getASTRecordLayout(RD); - uint64_t BaseOffset = ForVirtualBase ? - Layout.getVBaseClassOffsetInBits(Base) : - Layout.getBaseClassOffsetInBits(Base); + CharUnits BaseOffset = ForVirtualBase ? + Layout.getVBaseClassOffset(Base) : + Layout.getBaseClassOffset(Base); SubVTTIndex = CGF.CGM.getVTables().getSubVTTIndex(RD, BaseSubobject(Base, BaseOffset)); @@ -1378,8 +1378,7 @@ CodeGenFunction::InitializeVTablePointer(BaseSubobject Base, NonVirtualOffset = OffsetFromNearestVBase; } else { // We can just use the base offset in the complete class. - NonVirtualOffset = - CGM.getContext().toCharUnitsFromBits(Base.getBaseOffset()); + NonVirtualOffset = Base.getBaseOffset(); } // Apply the offsets. @@ -1443,16 +1442,13 @@ CodeGenFunction::InitializeVTablePointers(BaseSubobject Base, } else { const ASTRecordLayout &Layout = getContext().getASTRecordLayout(RD); - BaseOffset = - getContext().toCharUnitsFromBits(Base.getBaseOffset()) + - Layout.getBaseClassOffset(BaseDecl); + BaseOffset = Base.getBaseOffset() + Layout.getBaseClassOffset(BaseDecl); BaseOffsetFromNearestVBase = OffsetFromNearestVBase + Layout.getBaseClassOffset(BaseDecl); BaseDeclIsNonVirtualPrimaryBase = Layout.getPrimaryBase() == BaseDecl; } - InitializeVTablePointers(BaseSubobject(BaseDecl, - getContext().toBits(BaseOffset)), + InitializeVTablePointers(BaseSubobject(BaseDecl, BaseOffset), I->isVirtual() ? BaseDecl : NearestVBase, BaseOffsetFromNearestVBase, BaseDeclIsNonVirtualPrimaryBase, @@ -1470,7 +1466,8 @@ void CodeGenFunction::InitializeVTablePointers(const CXXRecordDecl *RD) { // Initialize the vtable pointers for this class and all of its bases. VisitedVirtualBasesSetTy VBases; - InitializeVTablePointers(BaseSubobject(RD, 0), /*NearestVBase=*/0, + InitializeVTablePointers(BaseSubobject(RD, CharUnits::Zero()), + /*NearestVBase=*/0, /*OffsetFromNearestVBase=*/CharUnits::Zero(), /*BaseIsNonVirtualPrimaryBase=*/false, VTable, RD, VBases); |