/// SubVTTIndicies - The sub-VTT indices for the bases of the most derived
/// class.
- llvm::DenseMap<const CXXRecordDecl *, uint64_t> SubVTTIndicies;
+ llvm::DenseMap<BaseSubobject, uint64_t> SubVTTIndicies;
/// SecondaryVirtualPointerIndices - The secondary virtual pointer indices of
/// all subobjects of the most derived class.
}
/// getSubVTTIndicies - Returns a reference to the sub-VTT indices.
- const llvm::DenseMap<const CXXRecordDecl *, uint64_t> &
- getSubVTTIndicies() const {
+ const llvm::DenseMap<BaseSubobject, uint64_t> &getSubVTTIndicies() const {
return SubVTTIndicies;
}
if (!IsPrimaryVTT) {
// Remember the sub-VTT index.
- SubVTTIndicies[RD] = VTTComponents.size();
+ SubVTTIndicies[Base] = VTTComponents.size();
}
AddressPointsMapTy AddressPoints;
uint64_t CodeGenVTables::getSubVTTIndex(const CXXRecordDecl *RD,
BaseSubobject Base) {
- ClassPairTy ClassPair(RD, Base.getBase());
+ BaseSubobjectPairTy ClassSubobjectPair(RD, Base);
- SubVTTIndiciesMapTy::iterator I = SubVTTIndicies.find(ClassPair);
+ SubVTTIndiciesMapTy::iterator I = SubVTTIndicies.find(ClassSubobjectPair);
if (I != SubVTTIndicies.end())
return I->second;
VTTBuilder Builder(CGM, RD, /*GenerateDefinition=*/false);
- for (llvm::DenseMap<const CXXRecordDecl *, uint64_t>::const_iterator I =
+ for (llvm::DenseMap<BaseSubobject, uint64_t>::const_iterator I =
Builder.getSubVTTIndicies().begin(),
E = Builder.getSubVTTIndicies().end(); I != E; ++I) {
// Insert all indices.
- ClassPairTy ClassPair(RD, I->first);
+ BaseSubobjectPairTy ClassSubobjectPair(RD, I->first);
- SubVTTIndicies.insert(std::make_pair(ClassPair, I->second));
+ SubVTTIndicies.insert(std::make_pair(ClassSubobjectPair, I->second));
}
- I = SubVTTIndicies.find(ClassPair);
+ I = SubVTTIndicies.find(ClassSubobjectPair);
assert(I != SubVTTIndicies.end() && "Did not find index!");
return I->second;
/// integers are the vtable components.
VTableLayoutMapTy VTableLayoutMap;
- typedef llvm::DenseMap<std::pair<const CXXRecordDecl *,
- BaseSubobject>, uint64_t> AddressPointsMapTy;
+ typedef std::pair<const CXXRecordDecl *, BaseSubobject> BaseSubobjectPairTy;
+ typedef llvm::DenseMap<BaseSubobjectPairTy, uint64_t> AddressPointsMapTy;
/// Address points - Address points for all vtables.
AddressPointsMapTy AddressPoints;
return &Components[1];
}
- typedef llvm::DenseMap<ClassPairTy, uint64_t> SubVTTIndiciesMapTy;
+ typedef llvm::DenseMap<BaseSubobjectPairTy, uint64_t> SubVTTIndiciesMapTy;
/// SubVTTIndicies - Contains indices into the various sub-VTTs.
SubVTTIndiciesMapTy SubVTTIndicies;
-
- typedef llvm::DenseMap<std::pair<const CXXRecordDecl *,
- BaseSubobject>, uint64_t>
+ typedef llvm::DenseMap<BaseSubobjectPairTy, uint64_t>
SecondaryVirtualPointerIndicesMapTy;
/// SecondaryVirtualPointerIndices - Contains the secondary virtual pointer