/// AddVCallAndVBaseOffsets - Add vcall offsets and vbase offsets for the
/// given base subobject.
void AddVCallAndVBaseOffsets(BaseSubobject Base, bool BaseIsVirtual,
- uint64_t RealBaseOffset);
+ CharUnits RealBaseOffset);
/// AddVCallOffsets - Add vcall offsets for the given base subobject.
void AddVCallOffsets(BaseSubobject Base, CharUnits VBaseOffset);
Context(MostDerivedClass->getASTContext()), Overriders(Overriders) {
// Add vcall and vbase offsets.
- AddVCallAndVBaseOffsets(Base, BaseIsVirtual, OffsetInLayoutClass);
+ AddVCallAndVBaseOffsets(Base, BaseIsVirtual,
+ Context.toCharUnitsFromBits(OffsetInLayoutClass));
}
/// Methods for iterating over the components.
void
VCallAndVBaseOffsetBuilder::AddVCallAndVBaseOffsets(BaseSubobject Base,
bool BaseIsVirtual,
- uint64_t RealBaseOffset) {
+ CharUnits RealBaseOffset) {
const ASTRecordLayout &Layout = Context.getASTRecordLayout(Base.getBase());
// Itanium C++ ABI 2.5.2:
PrimaryBaseIsVirtual, RealBaseOffset);
}
- AddVBaseOffsets(Base.getBase(), RealBaseOffset);
+ AddVBaseOffsets(Base.getBase(), Context.toBits(RealBaseOffset));
// We only want to add vcall offsets for virtual bases.
if (BaseIsVirtual)
- AddVCallOffsets(Base, Context.toCharUnitsFromBits(RealBaseOffset));
+ AddVCallOffsets(Base, RealBaseOffset);
}
int64_t VCallAndVBaseOffsetBuilder::getCurrentOffsetOffset() const {