• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/clang/lib/AST/

Lines Matching refs:Base

189   for (const CXXBaseSpecifier &Base : Class->bases()) {
190 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
282 for (const BaseSubobjectInfo *Base : Info->Bases) {
283 if (Base->IsVirtual)
286 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
288 if (!CanPlaceBaseSubobjectAtOffset(Base, BaseOffset))
332 for (const BaseSubobjectInfo *Base : Info->Bases) {
333 if (Base->IsVirtual)
336 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
337 UpdateEmptyBaseSubobjects(Base, BaseOffset, PlacingEmptyBase);
391 for (const CXXBaseSpecifier &Base : RD->bases()) {
392 if (Base.isVirtual())
395 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
404 for (const CXXBaseSpecifier &Base : RD->vbases()) {
405 const CXXRecordDecl *VBaseDecl = Base.getType()->getAsCXXRecordDecl();
502 for (const CXXBaseSpecifier &Base : RD->bases()) {
503 if (Base.isVirtual())
506 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
515 for (const CXXBaseSpecifier &Base : RD->vbases()) {
516 const CXXRecordDecl *VBaseDecl = Base.getType()->getAsCXXRecordDecl();
743 void LayoutNonVirtualBase(const BaseSubobjectInfo *Base);
753 void LayoutVirtualBase(const BaseSubobjectInfo *Base);
757 CharUnits LayoutBase(const BaseSubobjectInfo *Base);
815 const CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl();
818 if (I.isVirtual() && Context.isNearlyEmpty(Base)) {
821 if (!IndirectPrimaryBases.count(Base)) {
822 PrimaryBase = Base;
829 FirstNearlyEmptyVBase = Base;
832 SelectPrimaryVBase(Base);
856 const CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl();
858 if (Base->isDynamicClass()) {
860 PrimaryBase = Base;
1075 const BaseSubobjectInfo *Base) {
1077 CharUnits Offset = LayoutBase(Base);
1080 assert(!Bases.count(Base->Class) && "base offset already exists!");
1081 Bases.insert(std::make_pair(Base->Class, Offset));
1083 AddPrimaryVirtualBaseOffsets(Base, Offset);
1110 for (const BaseSubobjectInfo *Base : Info->Bases) {
1111 if (Base->IsVirtual)
1114 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
1115 AddPrimaryVirtualBaseOffsets(Base, BaseOffset);
1133 for (const CXXBaseSpecifier &Base : RD->bases()) {
1134 assert(!Base.getType()->isDependentType() &&
1137 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
1139 if (Base.isVirtual()) {
1166 const BaseSubobjectInfo *Base) {
1167 assert(!Base->Derived && "Trying to lay out a primary virtual base!");
1170 CharUnits Offset = LayoutBase(Base);
1173 assert(!VBases.count(Base->Class) && "vbase offset already exists!");
1174 VBases.insert(std::make_pair(Base->Class,
1177 AddPrimaryVirtualBaseOffsets(Base, Offset);
1181 ItaniumRecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) {
1182 const ASTRecordLayout &Layout = Context.getASTRecordLayout(Base->Class);
1190 if (Base->IsVirtual)
1191 HasExternalLayout = External.getExternalVBaseOffset(Base->Class, Offset);
1193 HasExternalLayout = External.getExternalNVBaseOffset(Base->Class, Offset);
1207 if (Base->Class->isEmpty() &&
1209 EmptySubobjects->CanPlaceBaseAtOffset(Base, CharUnits::Zero())) {
1227 while (!EmptySubobjects->CanPlaceBaseAtOffset(Base, Offset))
1230 bool Allowed = EmptySubobjects->CanPlaceBaseAtOffset(Base, Offset);
1232 assert(Allowed && "Base subobject externally placed at overlapping offset");
1242 if (!Base->Class->isEmpty()) {
1334 for (const CXXBaseSpecifier &Base : RD->bases()) {
1335 if (Base.isVirtual())
1338 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
1344 for (const CXXBaseSpecifier &Base : RD->vbases()) {
1345 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
1804 // Base types with sizes that aren't a power of two don't work
2382 /// Base classes and their offsets in the record.
2573 for (const CXXBaseSpecifier &Base : RD->bases()) {
2574 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
2578 if (Base.isVirtual()) {
2620 for (const CXXBaseSpecifier &Base : RD->bases()) {
2621 if (Base.isVirtual())
2623 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
2823 for (BaseOffsetsMapTy::value_type &Base : Bases)
2824 if (Base.second >= InjectionSite)
2825 Base.second += Offset;
2855 for (BaseOffsetsMapTy::value_type &Base : Bases)
2856 Base.second += Offset;
2960 for (const CXXBaseSpecifier &Base : RD->bases())
2961 if (!Base.isVirtual() &&
2963 Base.getType()->getAsCXXRecordDecl()))
2974 for (const CXXBaseSpecifier &Base : RD->vbases()) {
2975 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
2985 for (const CXXBaseSpecifier &Base : RD->bases()) {
2986 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
3026 for (const CXXBaseSpecifier &Base : RD->vbases()) {
3027 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
3344 for (const CXXBaseSpecifier &Base : CXXRD->bases()) {
3345 assert(!Base.getType()->isDependentType() &&
3347 if (!Base.isVirtual())
3348 Bases.push_back(Base.getType()->getAsCXXRecordDecl());
3358 for (const CXXRecordDecl *Base : Bases) {
3359 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base);
3360 DumpRecordLayout(OS, Base, C, BaseOffset, IndentLevel,
3361 Base == PrimaryBase ? "(primary base)" : "(base)",
3407 for (const CXXBaseSpecifier &Base : CXXRD->vbases()) {
3408 assert(Base.isVirtual() && "Found non-virtual class!");
3409 const CXXRecordDecl *VBase = Base.getType()->getAsCXXRecordDecl();