aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGVTables.cpp
diff options
context:
space:
mode:
authorKen Dyck <kd@kendyck.com>2011-03-27 18:57:53 +0000
committerKen Dyck <kd@kendyck.com>2011-03-27 18:57:53 +0000
commit82abeaed0b565e819407b523ed73aa5a4185b27f (patch)
tree0a19c8486ef52f1deb3b189c9bb57bf14f1c251f /lib/CodeGen/CGVTables.cpp
parent7870b133ac7b03bd53388f51250d009325f43399 (diff)
Convert offset members in MethodInfo to CharUnits. No change in
functionality intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128383 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGVTables.cpp')
-rw-r--r--lib/CodeGen/CGVTables.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/lib/CodeGen/CGVTables.cpp b/lib/CodeGen/CGVTables.cpp
index 17d3cde8b0..0e7a477b4f 100644
--- a/lib/CodeGen/CGVTables.cpp
+++ b/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!");