Lines Matching defs:BaseSubobjectInfo

27 /// BaseSubobjectInfo - Represents a single base subobject in a complete class.
34 /// The BaseSubobjectInfo graph for C will have three BaseSubobjectInfo
37 /// If a base is virtual, it will only have one BaseSubobjectInfo allocated.
38 struct BaseSubobjectInfo {
46 SmallVector<BaseSubobjectInfo*, 4> Bases;
50 BaseSubobjectInfo *PrimaryVirtualBaseInfo;
53 const BaseSubobjectInfo *Derived;
126 void UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
154 bool CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
178 bool CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
269 EmptySubobjectMap::CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
281 for (const BaseSubobjectInfo *Base : Info->Bases) {
292 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
313 void EmptySubobjectMap::UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
329 for (const BaseSubobjectInfo *Base : Info->Bases) {
338 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
355 bool EmptySubobjectMap::CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
719 /// BaseSubobjectInfoAllocator - Allocator for BaseSubobjectInfo objects.
720 llvm::SpecificBumpPtrAllocator<BaseSubobjectInfo> BaseSubobjectInfoAllocator;
722 typedef llvm::DenseMap<const CXXRecordDecl *, BaseSubobjectInfo *>
739 BaseSubobjectInfo *ComputeBaseSubobjectInfo(const CXXRecordDecl *RD,
741 BaseSubobjectInfo *Derived);
755 void LayoutNonVirtualBase(const BaseSubobjectInfo *Base);
757 void AddPrimaryVirtualBaseOffsets(const BaseSubobjectInfo *Info,
765 void LayoutVirtualBase(const BaseSubobjectInfo *Base);
769 CharUnits LayoutBase(const BaseSubobjectInfo *Base);
902 BaseSubobjectInfo *ItaniumRecordLayoutBuilder::ComputeBaseSubobjectInfo(
903 const CXXRecordDecl *RD, bool IsVirtual, BaseSubobjectInfo *Derived) {
904 BaseSubobjectInfo *Info;
908 BaseSubobjectInfo *&InfoSlot = VirtualBaseInfo[RD];
915 InfoSlot = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
918 Info = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
927 BaseSubobjectInfo *PrimaryVirtualBaseInfo = nullptr;
987 BaseSubobjectInfo *Info = ComputeBaseSubobjectInfo(BaseDecl, IsVirtual,
1033 BaseSubobjectInfo *PrimaryBaseInfo = VirtualBaseInfo.lookup(PrimaryBase);
1045 BaseSubobjectInfo *PrimaryBaseInfo =
1087 BaseSubobjectInfo *BaseInfo = NonVirtualBaseInfo.lookup(BaseDecl);
1095 const BaseSubobjectInfo *Base) {
1107 const BaseSubobjectInfo *Info, CharUnits Offset) {
1130 for (const BaseSubobjectInfo *Base : Info->Bases) {
1169 const BaseSubobjectInfo *BaseInfo = VirtualBaseInfo.lookup(BaseDecl);
1186 const BaseSubobjectInfo *Base) {
1201 ItaniumRecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) {