Lines Matching refs:BaseSubobjectInfo

29 /// BaseSubobjectInfo - Represents a single base subobject in a complete class.
36 /// The BaseSubobjectInfo graph for C will have three BaseSubobjectInfo
39 /// If a base is virtual, it will only have one BaseSubobjectInfo allocated.
40 struct BaseSubobjectInfo {
48 SmallVector<BaseSubobjectInfo*, 4> Bases;
52 BaseSubobjectInfo *PrimaryVirtualBaseInfo;
55 const BaseSubobjectInfo *Derived;
82 void UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
109 bool CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
133 bool CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
228 EmptySubobjectMap::CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
241 BaseSubobjectInfo* Base = Info->Bases[I];
252 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
275 void EmptySubobjectMap::UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
292 BaseSubobjectInfo* Base = Info->Bases[I];
301 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
320 bool EmptySubobjectMap::CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
691 /// BaseSubobjectInfoAllocator - Allocator for BaseSubobjectInfo objects.
692 llvm::SpecificBumpPtrAllocator<BaseSubobjectInfo> BaseSubobjectInfoAllocator;
694 typedef llvm::DenseMap<const CXXRecordDecl *, BaseSubobjectInfo *>
711 BaseSubobjectInfo *ComputeBaseSubobjectInfo(const CXXRecordDecl *RD,
713 BaseSubobjectInfo *Derived);
727 void LayoutNonVirtualBase(const BaseSubobjectInfo *Base);
729 void AddPrimaryVirtualBaseOffsets(const BaseSubobjectInfo *Info,
745 void LayoutVirtualBase(const BaseSubobjectInfo *Base,
750 CharUnits LayoutBase(const BaseSubobjectInfo *Base);
890 BaseSubobjectInfo *
893 BaseSubobjectInfo *Derived) {
894 BaseSubobjectInfo *Info;
898 BaseSubobjectInfo *&InfoSlot = VirtualBaseInfo[RD];
905 InfoSlot = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
908 Info = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
917 BaseSubobjectInfo *PrimaryVirtualBaseInfo = 0;
980 BaseSubobjectInfo *Info = ComputeBaseSubobjectInfo(BaseDecl, IsVirtual, 0);
1026 BaseSubobjectInfo *PrimaryBaseInfo = VirtualBaseInfo.lookup(PrimaryBase);
1038 BaseSubobjectInfo *PrimaryBaseInfo =
1087 BaseSubobjectInfo *BaseInfo = NonVirtualBaseInfo.lookup(BaseDecl);
1125 void RecordLayoutBuilder::LayoutNonVirtualBase(const BaseSubobjectInfo *Base) {
1137 RecordLayoutBuilder::AddPrimaryVirtualBaseOffsets(const BaseSubobjectInfo *Info,
1162 const BaseSubobjectInfo *Base = Info->Bases[I];
1447 const BaseSubobjectInfo *BaseInfo = VirtualBaseInfo.lookup(BaseDecl);
1475 const BaseSubobjectInfo *BaseInfo = VirtualBaseInfo.lookup(BaseDecl);
1494 void RecordLayoutBuilder::LayoutVirtualBase(const BaseSubobjectInfo *Base,
1510 CharUnits RecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) {