Home | History | Annotate | Download | only in AST

Lines Matching defs:Info

40   /// Class - The class for this base info.
49 /// PrimaryVirtualBaseInfo - Holds the base info for the primary virtual base
50 /// of this base info (if one exists).
81 void UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
108 bool CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
132 bool CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
228 EmptySubobjectMap::CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
235 if (!CanPlaceSubobjectAtOffset(Info->Class, Offset))
239 const ASTRecordLayout &Layout = Context.getASTRecordLayout(Info->Class);
240 for (unsigned I = 0, E = Info->Bases.size(); I != E; ++I) {
241 BaseSubobjectInfo* Base = Info->Bases[I];
251 if (Info->PrimaryVirtualBaseInfo) {
252 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
254 if (Info == PrimaryVirtualBaseInfo->Derived) {
262 for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(),
263 E = Info->Class->field_end(); I != E; ++I, ++FieldNo) {
276 void EmptySubobjectMap::UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
288 AddSubobjectAtOffset(Info->Class, Offset);
291 const ASTRecordLayout &Layout = Context.getASTRecordLayout(Info->Class);
292 for (unsigned I = 0, E = Info->Bases.size(); I != E; ++I) {
293 BaseSubobjectInfo* Base = Info->Bases[I];
301 if (Info->PrimaryVirtualBaseInfo) {
302 BaseSubobjectInfo *PrimaryVirtualBaseInfo = Info->PrimaryVirtualBaseInfo;
304 if (Info == PrimaryVirtualBaseInfo->Derived)
311 for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(),
312 E = Info->Class->field_end(); I != E; ++I, ++FieldNo) {
322 bool EmptySubobjectMap::CanPlaceBaseAtOffset(const BaseSubobjectInfo *Info,
329 if (!CanPlaceBaseSubobjectAtOffset(Info, Offset))
334 UpdateEmptyBaseSubobjects(Info, Offset, Info->Class->isEmpty());
693 /// of the class we're laying out to their base subobject info.
697 /// class we're laying out to their base subobject info.
724 void AddPrimaryVirtualBaseOffsets(const BaseSubobjectInfo *Info,
886 BaseSubobjectInfo *Info;
889 // Check if we already have info about this virtual base.
892 assert(InfoSlot->Class == RD && "Wrong class for virtual base info!");
898 Info = InfoSlot;
900 Info = new (BaseSubobjectInfoAllocator.Allocate()) BaseSubobjectInfo;
903 Info->Class = RD;
904 Info->IsVirtual = IsVirtual;
905 Info->Derived = 0;
906 Info->PrimaryVirtualBaseInfo = 0;
919 // Now check if we have base subobject info about this primary base.
924 // We did have info about this primary base, and it turns out that it
930 Info->PrimaryVirtualBaseInfo = PrimaryVirtualBaseInfo;
931 PrimaryVirtualBaseInfo->Derived = Info;
945 Info->Bases.push_back(ComputeBaseSubobjectInfo(BaseDecl, IsVirtual, Info));
949 // Traversing the bases must have created the base info for our primary
956 Info->PrimaryVirtualBaseInfo = PrimaryVirtualBaseInfo;
957 PrimaryVirtualBaseInfo->Derived = Info;
960 return Info;
971 // Compute the base subobject info for this base.
972 BaseSubobjectInfo *Info = ComputeBaseSubobjectInfo(BaseDecl, IsVirtual, 0);
979 // Add the base info to the map of non-virtual bases.
982 NonVirtualBaseInfo.insert(std::make_pair(BaseDecl, Info));
1010 // Compute base subobject info.
1033 "Did not find base info for non-virtual primary base!");
1081 assert(BaseInfo && "Did not find base info for non-virtual base!");
1130 RecordLayoutBuilder::AddPrimaryVirtualBaseOffsets(const BaseSubobjectInfo *Info,
1133 if (!Info->Class->getNumVBases())
1137 if (Info->PrimaryVirtualBaseInfo) {
1138 assert(Info->PrimaryVirtualBaseInfo->IsVirtual &&
1140 if (Info->PrimaryVirtualBaseInfo->Derived == Info) {
1142 assert(!VBases.count(Info->PrimaryVirtualBaseInfo->Class) &&
1144 VBases.insert(std::make_pair(Info->PrimaryVirtualBaseInfo->Class,
1148 AddPrimaryVirtualBaseOffsets(Info->PrimaryVirtualBaseInfo, Offset);
1153 const ASTRecordLayout &Layout = Context.getASTRecordLayout(Info->Class);
1154 for (unsigned I = 0, E = Info->Bases.size(); I != E; ++I) {
1155 const BaseSubobjectInfo *Base = Info->Bases[I];
1275 assert(BaseInfo && "Did not find virtual base info!");
1301 assert(BaseInfo && "Did not find virtual base info!");
2226 // http://www.codesourcery.com/public/cxx-abi/abi.html#POD for more info.
2465 const ASTRecordLayout &Info = getASTRecordLayout(RD);
2479 OS << " Size:" << toBits(Info.getSize()) << "\n";
2480 OS << " DataSize:" << toBits(Info.getDataSize()) << "\n";
2481 OS << " Alignment:" << toBits(Info.getAlignment()) << "\n";
2483 for (unsigned i = 0, e = Info.getFieldCount(); i != e; ++i) {
2485 OS << Info.getFieldOffset(i);