/// MethodBaseOffsetPairTy - Uniquely identifies a member function
/// in a base subobject.
- typedef std::pair<const CXXMethodDecl *, uint64_t> MethodBaseOffsetPairTy;
+ typedef std::pair<const CXXMethodDecl *, CharUnits> MethodBaseOffsetPairTy;
typedef llvm::DenseMap<MethodBaseOffsetPairTy,
OverriderInfo> OverridersMapTy;
/// getOverrider - Get the final overrider for the given method declaration in
/// the subobject with the given base offset.
OverriderInfo getOverrider(const CXXMethodDecl *MD,
- uint64_t BaseOffset) const {
+ CharUnits BaseOffset) const {
assert(OverridersMap.count(std::make_pair(MD, BaseOffset)) &&
"Did not find overrider!");
SubobjectLayoutClassOffsets[std::make_pair(OverriderRD,
Method.Subobject)];
- OverriderInfo& Overrider =
- OverridersMap[std::make_pair(MD, Context.toBits(BaseOffset))];
+ OverriderInfo& Overrider = OverridersMap[std::make_pair(MD, BaseOffset)];
assert(!Overrider.Method && "Overrider should not exist yet!");
Overrider.Offset = Context.toBits(OverriderOffset);
if (!MD->isVirtual())
continue;
- OverriderInfo Overrider =
- getOverrider(MD, Context.toBits(Base.getBaseOffset()));
+ OverriderInfo Overrider = getOverrider(MD, Base.getBaseOffset());
Out << " " << MD->getQualifiedNameAsString() << " - (";
Out << Overrider.Method->getQualifiedNameAsString();
if (Overriders) {
// Get the final overrider.
FinalOverriders::OverriderInfo Overrider =
- Overriders->getOverrider(MD, Context.toBits(Base.getBaseOffset()));
+ Overriders->getOverrider(MD, Base.getBaseOffset());
/// The vcall offset is the offset from the virtual base to the object
/// where the function was overridden.
// Get the final overrider for this method.
FinalOverriders::OverriderInfo Overrider =
- Overriders.getOverrider(MD, MethodInfo.BaseOffset);
+ Overriders.getOverrider(MD,
+ Context.toCharUnitsFromBits(MethodInfo.BaseOffset));
// Check if we need an adjustment at all.
if (MethodInfo.BaseOffsetInLayoutClass == Overrider.Offset) {
// Get the final overrider.
FinalOverriders::OverriderInfo Overrider =
- Overriders.getOverrider(MD, Context.toBits(Base.getBaseOffset()));
+ Overriders.getOverrider(MD, Base.getBaseOffset());
// Check if this virtual member function overrides a method in a primary
// base. If this is the case, and the return type doesn't require adjustment