diff options
| author | Ken Dyck <kd@kendyck.com> | 2011-03-27 18:57:53 +0000 |
|---|---|---|
| committer | Ken Dyck <kd@kendyck.com> | 2011-03-27 18:57:53 +0000 |
| commit | 7d876f3649fb735581ddb2483d89e895a23c3900 (patch) | |
| tree | 65d1a0ea473dc8f7015d9e5dc73582787f21b905 /clang/lib/CodeGen/CGVTables.cpp | |
| parent | 530deb9a3900b3aea4fa0ad2b7f2837b5a22689f (diff) | |
| download | llvm-7d876f3649fb735581ddb2483d89e895a23c3900.zip llvm-7d876f3649fb735581ddb2483d89e895a23c3900.tar.gz llvm-7d876f3649fb735581ddb2483d89e895a23c3900.tar.bz2 | |
Convert offset members in MethodInfo to CharUnits. No change in
functionality intended.
llvm-svn: 128383
Diffstat (limited to 'clang/lib/CodeGen/CGVTables.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGVTables.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp index 17d3cde..0e7a477 100644 --- a/clang/lib/CodeGen/CGVTables.cpp +++ b/clang/lib/CodeGen/CGVTables.cpp @@ -1005,23 +1005,26 @@ private: /// (Used for computing 'this' pointer adjustment thunks. struct MethodInfo { /// BaseOffset - The base offset of this method. - const uint64_t BaseOffset; + const CharUnits BaseOffset; /// BaseOffsetInLayoutClass - The base offset in the layout class of this /// method. - const uint64_t BaseOffsetInLayoutClass; + const CharUnits BaseOffsetInLayoutClass; /// VTableIndex - The index in the vtable that this method has. /// (For destructors, this is the index of the complete destructor). const uint64_t VTableIndex; - MethodInfo(uint64_t BaseOffset, uint64_t BaseOffsetInLayoutClass, + MethodInfo(CharUnits BaseOffset, CharUnits BaseOffsetInLayoutClass, uint64_t VTableIndex) : BaseOffset(BaseOffset), BaseOffsetInLayoutClass(BaseOffsetInLayoutClass), VTableIndex(VTableIndex) { } - MethodInfo() : BaseOffset(0), BaseOffsetInLayoutClass(0), VTableIndex(0) { } + MethodInfo() + : BaseOffset(CharUnits::Zero()), + BaseOffsetInLayoutClass(CharUnits::Zero()), + VTableIndex(0) { } }; typedef llvm::DenseMap<const CXXMethodDecl *, MethodInfo> MethodInfoMapTy; @@ -1259,12 +1262,10 @@ void VTableBuilder::ComputeThisAdjustments() { // Get the final overrider for this method. FinalOverriders::OverriderInfo Overrider = - Overriders.getOverrider(MD, - Context.toCharUnitsFromBits(MethodInfo.BaseOffset)); + Overriders.getOverrider(MD, MethodInfo.BaseOffset); // Check if we need an adjustment at all. - uint64_t OverriderOffsetInBits = Context.toBits(Overrider.Offset); - if (MethodInfo.BaseOffsetInLayoutClass == OverriderOffsetInBits) { + if (MethodInfo.BaseOffsetInLayoutClass == Overrider.Offset) { // When a return thunk is needed by a derived class that overrides a // virtual base, gcc uses a virtual 'this' adjustment as well. // While the thunk itself might be needed by vtables in subclasses or @@ -1275,7 +1276,8 @@ void VTableBuilder::ComputeThisAdjustments() { } ThisAdjustment ThisAdjustment = - ComputeThisAdjustment(MD, MethodInfo.BaseOffsetInLayoutClass, Overrider); + ComputeThisAdjustment(MD, + Context.toBits(MethodInfo.BaseOffsetInLayoutClass), Overrider); if (ThisAdjustment.isEmpty()) continue; @@ -1650,9 +1652,9 @@ VTableBuilder::AddMethods(BaseSubobject Base, uint64_t BaseOffsetInLayoutClass, "Did not find the overridden method!"); MethodInfo &OverriddenMethodInfo = MethodInfoMap[OverriddenMD]; - MethodInfo MethodInfo(Context.toBits(Base.getBaseOffset()), - BaseOffsetInLayoutClass, - OverriddenMethodInfo.VTableIndex); + MethodInfo MethodInfo(Base.getBaseOffset(), + Context.toCharUnitsFromBits(BaseOffsetInLayoutClass), + OverriddenMethodInfo.VTableIndex); assert(!MethodInfoMap.count(MD) && "Should not have method info for this method yet!"); @@ -1692,8 +1694,9 @@ VTableBuilder::AddMethods(BaseSubobject Base, uint64_t BaseOffsetInLayoutClass, } // Insert the method info for this method. - MethodInfo MethodInfo(Context.toBits(Base.getBaseOffset()), - BaseOffsetInLayoutClass, Components.size()); + MethodInfo MethodInfo(Base.getBaseOffset(), + Context.toCharUnitsFromBits(BaseOffsetInLayoutClass), + Components.size()); assert(!MethodInfoMap.count(MD) && "Should not have method info for this method yet!"); |
