Lines Matching refs:CXXRecordDecl
41 const CXXRecordDecl *Class;
73 llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsets;
76 llvm::DenseMap<const CXXRecordDecl *, CharUnits> VirtualBaseOffsets;
86 bool getExternalNVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) { in getExternalNVBaseOffset()
94 bool getExternalVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) { in getExternalVBaseOffset()
110 const CXXRecordDecl *Class;
113 typedef llvm::TinyPtrVector<const CXXRecordDecl *> ClassVectorTy;
125 void AddSubobjectAtOffset(const CXXRecordDecl *RD, CharUnits Offset);
130 void UpdateEmptyFieldSubobjects(const CXXRecordDecl *RD,
131 const CXXRecordDecl *Class,
151 bool CanPlaceSubobjectAtOffset(const CXXRecordDecl *RD,
157 bool CanPlaceFieldSubobjectAtOffset(const CXXRecordDecl *RD,
158 const CXXRecordDecl *Class,
169 EmptySubobjectMap(const ASTContext &Context, const CXXRecordDecl *Class) in EmptySubobjectMap()
189 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in ComputeEmptySubobjectSizes()
215 const CXXRecordDecl *MemberDecl = RT->getAsCXXRecordDecl(); in ComputeEmptySubobjectSizes()
231 EmptySubobjectMap::CanPlaceSubobjectAtOffset(const CXXRecordDecl *RD, in CanPlaceSubobjectAtOffset()
249 void EmptySubobjectMap::AddSubobjectAtOffset(const CXXRecordDecl *RD, in AddSubobjectAtOffset()
302 for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(), in CanPlaceBaseSubobjectAtOffset()
349 for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(), in UpdateEmptyBaseSubobjects()
376 EmptySubobjectMap::CanPlaceFieldSubobjectAtOffset(const CXXRecordDecl *RD, in CanPlaceFieldSubobjectAtOffset()
377 const CXXRecordDecl *Class, in CanPlaceFieldSubobjectAtOffset()
394 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in CanPlaceFieldSubobjectAtOffset()
404 const CXXRecordDecl *VBaseDecl = Base.getType()->getAsCXXRecordDecl(); in CanPlaceFieldSubobjectAtOffset()
414 for (CXXRecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end(); in CanPlaceFieldSubobjectAtOffset()
437 if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl()) in CanPlaceFieldSubobjectAtOffset()
447 const CXXRecordDecl *RD = RT->getAsCXXRecordDecl(); in CanPlaceFieldSubobjectAtOffset()
480 void EmptySubobjectMap::UpdateEmptyFieldSubobjects(const CXXRecordDecl *RD, in UpdateEmptyFieldSubobjects()
481 const CXXRecordDecl *Class, in UpdateEmptyFieldSubobjects()
500 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in UpdateEmptyFieldSubobjects()
509 const CXXRecordDecl *VBaseDecl = Base.getType()->getAsCXXRecordDecl(); in UpdateEmptyFieldSubobjects()
518 for (CXXRecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end(); in UpdateEmptyFieldSubobjects()
532 if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl()) { in UpdateEmptyFieldSubobjects()
544 const CXXRecordDecl *RD = RT->getAsCXXRecordDecl(); in UpdateEmptyFieldSubobjects()
565 typedef llvm::SmallPtrSet<const CXXRecordDecl*, 4> ClassSetTy;
625 const CXXRecordDecl *PrimaryBase;
635 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
649 const CXXRecordDecl *FirstNearlyEmptyVBase;
653 llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBases;
672 void Layout(const CXXRecordDecl *D);
688 typedef llvm::DenseMap<const CXXRecordDecl *, BaseSubobjectInfo *>
701 void ComputeBaseSubobjectInfo(const CXXRecordDecl *RD);
705 BaseSubobjectInfo *ComputeBaseSubobjectInfo(const CXXRecordDecl *RD,
710 void DeterminePrimaryBase(const CXXRecordDecl *RD);
712 void SelectPrimaryVBase(const CXXRecordDecl *RD);
718 void LayoutNonVirtualBases(const CXXRecordDecl *RD);
727 void LayoutVirtualBases(const CXXRecordDecl *RD,
728 const CXXRecordDecl *MostDerivedClass);
788 void ItaniumRecordLayoutBuilder::SelectPrimaryVBase(const CXXRecordDecl *RD) { in SelectPrimaryVBase()
793 const CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl(); in SelectPrimaryVBase()
817 void ItaniumRecordLayoutBuilder::DeterminePrimaryBase(const CXXRecordDecl *RD) { in DeterminePrimaryBase()
834 const CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl(); in DeterminePrimaryBase()
865 const CXXRecordDecl *RD, bool IsVirtual, BaseSubobjectInfo *Derived) { in ComputeBaseSubobjectInfo()
888 const CXXRecordDecl *PrimaryVirtualBase = nullptr; in ComputeBaseSubobjectInfo()
921 const CXXRecordDecl *BaseDecl = I.getType()->getAsCXXRecordDecl(); in ComputeBaseSubobjectInfo()
942 const CXXRecordDecl *RD) { in ComputeBaseSubobjectInfo()
946 const CXXRecordDecl *BaseDecl = I.getType()->getAsCXXRecordDecl(); in ComputeBaseSubobjectInfo()
984 const CXXRecordDecl *RD) { in LayoutNonVirtualBases()
1037 const CXXRecordDecl *BaseDecl = I.getType()->getAsCXXRecordDecl(); in LayoutNonVirtualBases()
1099 const CXXRecordDecl *RD, const CXXRecordDecl *MostDerivedClass) { in LayoutVirtualBases()
1100 const CXXRecordDecl *PrimaryBase; in LayoutVirtualBases()
1116 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in LayoutVirtualBases()
1169 llvm::DenseMap<const CXXRecordDecl *, CharUnits>::iterator Known; in LayoutBase()
1286 void ItaniumRecordLayoutBuilder::Layout(const CXXRecordDecl *RD) { in Layout()
1311 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in Layout()
1318 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in Layout()
1834 if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) { in FinishLayout()
1990 const CXXRecordDecl *RD) { in computeKeyFunction()
2077 static bool mustSkipTailPadding(TargetCXXABI ABI, const CXXRecordDecl *RD) { in mustSkipTailPadding()
2216 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
2223 void cxxLayout(const CXXRecordDecl *RD);
2229 void initializeCXXLayout(const CXXRecordDecl *RD);
2230 void layoutNonVirtualBases(const CXXRecordDecl *RD);
2231 void layoutNonVirtualBase(const CXXRecordDecl *RD,
2232 const CXXRecordDecl *BaseDecl,
2235 void injectVFPtr(const CXXRecordDecl *RD);
2236 void injectVBPtr(const CXXRecordDecl *RD);
2245 void layoutVirtualBases(const CXXRecordDecl *RD);
2264 llvm::SmallPtrSetImpl<const CXXRecordDecl *> &HasVtorDispSet,
2265 const CXXRecordDecl *RD) const;
2291 const CXXRecordDecl *PrimaryBase;
2293 const CXXRecordDecl *SharedVBPtrBase;
2400 void MicrosoftRecordLayoutBuilder::cxxLayout(const CXXRecordDecl *RD) { in cxxLayout()
2456 MicrosoftRecordLayoutBuilder::initializeCXXLayout(const CXXRecordDecl *RD) { in initializeCXXLayout()
2475 MicrosoftRecordLayoutBuilder::layoutNonVirtualBases(const CXXRecordDecl *RD) { in layoutNonVirtualBases()
2485 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in layoutNonVirtualBases()
2510 for (CXXRecordDecl::method_iterator i = RD->method_begin(), in layoutNonVirtualBases()
2521 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in layoutNonVirtualBases()
2548 if (!isa<CXXRecordDecl>(RD)) in recordUsesEBO()
2563 const CXXRecordDecl *RD, in layoutNonVirtualBase()
2564 const CXXRecordDecl *BaseDecl, in layoutNonVirtualBase()
2693 void MicrosoftRecordLayoutBuilder::injectVBPtr(const CXXRecordDecl *RD) { in injectVBPtr()
2718 void MicrosoftRecordLayoutBuilder::injectVFPtr(const CXXRecordDecl *RD) { in injectVFPtr()
2743 void MicrosoftRecordLayoutBuilder::layoutVirtualBases(const CXXRecordDecl *RD) { in layoutVirtualBases()
2756 const CXXRecordDecl *BaseDecl = VBase.getType()->getAsCXXRecordDecl(); in layoutVirtualBases()
2763 llvm::SmallPtrSet<const CXXRecordDecl *, 2> HasVtorDispSet; in layoutVirtualBases()
2768 const CXXRecordDecl *BaseDecl = VBase.getType()->getAsCXXRecordDecl(); in layoutVirtualBases()
2816 if (!recordUsesEBO(RD) || !cast<CXXRecordDecl>(RD)->isEmpty()) { in finalizeLayout()
2838 RequiresVtordisp(const llvm::SmallPtrSetImpl<const CXXRecordDecl *> & in RequiresVtordisp()
2840 const CXXRecordDecl *RD) { in RequiresVtordisp()
2854 llvm::SmallPtrSetImpl<const CXXRecordDecl *> &HasVtordispSet, in computeVtorDispSet()
2855 const CXXRecordDecl *RD) const { in computeVtorDispSet()
2860 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in computeVtorDispSet()
2871 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in computeVtorDispSet()
2892 llvm::SmallPtrSet<const CXXRecordDecl *, 2> BasesWithOverriddenMethods; in computeVtorDispSet()
2912 const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl(); in computeVtorDispSet()
2947 if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) { in getASTRecordLayout()
2964 if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) { in getASTRecordLayout()
3010 const CXXMethodDecl *ASTContext::getCurrentKeyFunction(const CXXRecordDecl *RD) { in getCurrentKeyFunction()
3015 RD = cast<CXXRecordDecl>(RD->getDefinition()); in getCurrentKeyFunction()
3160 auto CXXRD = dyn_cast<CXXRecordDecl>(RD); in DumpRecordLayout()
3174 const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase(); in DumpRecordLayout()
3189 SmallVector<const CXXRecordDecl *, 4> Bases; in DumpRecordLayout()
3199 [&](const CXXRecordDecl *L, const CXXRecordDecl *R) { in DumpRecordLayout()
3204 for (const CXXRecordDecl *Base : Bases) { in DumpRecordLayout()
3255 const CXXRecordDecl *VBase = Base.getType()->getAsCXXRecordDecl(); in DumpRecordLayout()