Lines Matching defs:BaseSubobjectInfo
28 /// BaseSubobjectInfo - Represents a single base subobject in a complete class.
35 /// The BaseSubobjectInfo graph for C will have three BaseSubobjectInfo
38 /// If a base is virtual, it will only have one BaseSubobjectInfo allocated.
39 struct BaseSubobjectInfo {
47 SmallVector<BaseSubobjectInfo*, 4> Bases;
51 BaseSubobjectInfo *PrimaryVirtualBaseInfo;
54 const BaseSubobjectInfo *Derived;
127 void UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
155 bool CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
179 bool CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
270 EmptySubobjectMap::CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
282 for (const BaseSubobjectInfo *Base : Info->Bases) {
293 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
316 void EmptySubobjectMap::UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
332 for (const BaseSubobjectInfo *Base : Info->Bases) {
341 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
360 bool EmptySubobjectMap::CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
731 /// BaseSubobjectInfoAllocator - Allocator for BaseSubobjectInfo objects.
732 llvm::SpecificBumpPtrAllocator<BaseSubobjectInfo> BaseSubobjectInfoAllocator;
734 typedef llvm::DenseMap<const CXXRecordDecl *, BaseSubobjectInfo *>
751 BaseSubobjectInfo *ComputeBaseSubobjectInfo(const CXXRecordDecl *RD,
753 BaseSubobjectInfo *Derived);
767 void LayoutNonVirtualBase(const BaseSubobjectInfo *Base);
769 void AddPrimaryVirtualBaseOffsets(const BaseSubobjectInfo *Info,
777 void LayoutVirtualBase(const BaseSubobjectInfo *Base);
781 CharUnits LayoutBase(const BaseSubobjectInfo *Base);
914 BaseSubobjectInfo *ItaniumRecordLayoutBuilder::ComputeBaseSubobjectInfo(
915 const CXXRecordDecl *RD, bool IsVirtual, BaseSubobjectInfo *Derived) {
916 BaseSubobjectInfo *Info;
920 BaseSubobjectInfo *&InfoSlot = VirtualBaseInfo[RD];
927 InfoSlot = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
930 Info = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
939 BaseSubobjectInfo *PrimaryVirtualBaseInfo = nullptr;
999 BaseSubobjectInfo *Info = ComputeBaseSubobjectInfo(BaseDecl, IsVirtual,
1045 BaseSubobjectInfo *PrimaryBaseInfo = VirtualBaseInfo.lookup(PrimaryBase);
1057 BaseSubobjectInfo *PrimaryBaseInfo =
1099 BaseSubobjectInfo *BaseInfo = NonVirtualBaseInfo.lookup(BaseDecl);
1107 const BaseSubobjectInfo *Base) {
1119 const BaseSubobjectInfo *Info, CharUnits Offset) {
1142 for (const BaseSubobjectInfo *Base : Info->Bases) {
1181 const BaseSubobjectInfo *BaseInfo = VirtualBaseInfo.lookup(BaseDecl);
1198 const BaseSubobjectInfo *Base) {
1213 ItaniumRecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) {