aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGVTables.cpp
diff options
context:
space:
mode:
authorKen Dyck <kd@kendyck.com>2011-03-26 01:29:16 +0000
committerKen Dyck <kd@kendyck.com>2011-03-26 01:29:16 +0000
commit17d8519035e9cfcc507fc145de6a9321f295b09c (patch)
tree86c564348827cfdd2d75b2c37572f697c638f6fc /lib/CodeGen/CGVTables.cpp
parente6203134056fe3912f4c436099a69bc6242d770f (diff)
Convert FinalOverriders::Offset to CharUnits. No change in functionality
intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128321 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGVTables.cpp')
-rw-r--r--lib/CodeGen/CGVTables.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/CodeGen/CGVTables.cpp b/lib/CodeGen/CGVTables.cpp
index 5f507bd35e..ebb1c0ff65 100644
--- a/lib/CodeGen/CGVTables.cpp
+++ b/lib/CodeGen/CGVTables.cpp
@@ -64,9 +64,9 @@ public:
const CXXMethodDecl *Method;
/// Offset - the base offset of the overrider in the layout class.
- uint64_t Offset;
+ CharUnits Offset;
- OverriderInfo() : Method(0), Offset(0) { }
+ OverriderInfo() : Method(0), Offset(CharUnits::Zero()) { }
};
private:
@@ -199,7 +199,7 @@ FinalOverriders::FinalOverriders(const CXXRecordDecl *MostDerivedClass,
OverriderInfo& Overrider = OverridersMap[std::make_pair(MD, BaseOffset)];
assert(!Overrider.Method && "Overrider should not exist yet!");
- Overrider.Offset = Context.toBits(OverriderOffset);
+ Overrider.Offset = OverriderOffset;
Overrider.Method = Method.Method;
}
}
@@ -422,7 +422,7 @@ void FinalOverriders::dump(llvm::raw_ostream &Out, BaseSubobject Base,
Out << " " << MD->getQualifiedNameAsString() << " - (";
Out << Overrider.Method->getQualifiedNameAsString();
- Out << ", " << ", " << Overrider.Offset / 8 << ')';
+ Out << ", " << ", " << Overrider.Offset.getQuantity() << ')';
BaseOffset Offset;
if (!Overrider.Method->isPure())
@@ -886,7 +886,7 @@ void VCallAndVBaseOffsetBuilder::AddVCallOffsets(BaseSubobject Base,
/// The vcall offset is the offset from the virtual base to the object
/// where the function was overridden.
// FIXME: We should not use / 8 here.
- Offset = (int64_t)(Overrider.Offset - VBaseOffset) / 8;
+ Offset = (int64_t)(Context.toBits(Overrider.Offset) - VBaseOffset) / 8;
}
Components.push_back(VTableComponent::MakeVCallOffset(Offset));
@@ -1263,7 +1263,8 @@ void VTableBuilder::ComputeThisAdjustments() {
Context.toCharUnitsFromBits(MethodInfo.BaseOffset));
// Check if we need an adjustment at all.
- if (MethodInfo.BaseOffsetInLayoutClass == Overrider.Offset) {
+ uint64_t OverriderOffsetInBits = Context.toBits(Overrider.Offset);
+ if (MethodInfo.BaseOffsetInLayoutClass == OverriderOffsetInBits) {
// 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
@@ -1409,8 +1410,7 @@ VTableBuilder::ComputeThisAdjustment(const CXXMethodDecl *MD,
BaseOffsetInLayoutClass));
BaseSubobject OverriderBaseSubobject(Overrider.Method->getParent(),
- Context.toCharUnitsFromBits(
- Overrider.Offset));
+ Overrider.Offset);
// Compute the adjustment offset.
BaseOffset Offset = ComputeThisAdjustmentBaseOffset(OverriddenBaseSubobject,