Lines Matching refs:RD
330 const CXXRecordDecl *RD = Base.getBase(); in ComputeBaseOffsets() local
334 SubobjectNumber = ++SubobjectCounts[RD]; in ComputeBaseOffsets()
337 assert(!SubobjectOffsets.count(std::make_pair(RD, SubobjectNumber)) in ComputeBaseOffsets()
339 assert(!SubobjectLayoutClassOffsets.count(std::make_pair(RD, SubobjectNumber)) in ComputeBaseOffsets()
342 SubobjectOffsets[std::make_pair(RD, SubobjectNumber)] = Base.getBaseOffset(); in ComputeBaseOffsets()
343 SubobjectLayoutClassOffsets[std::make_pair(RD, SubobjectNumber)] = in ComputeBaseOffsets()
347 for (const auto &B : RD->bases()) { in ComputeBaseOffsets()
364 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in ComputeBaseOffsets()
380 const CXXRecordDecl *RD = Base.getBase(); in dump() local
381 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in dump()
383 for (const auto &B : RD->bases()) { in dump()
406 RD->printQualifiedName(Out); in dump()
411 for (const auto *MD : RD->methods()) { in dump()
678 const CXXRecordDecl *RD = Base.getBase(); in AddVCallOffsets() local
679 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in AddVCallOffsets()
696 for (const auto *MD : RD->methods()) { in AddVCallOffsets()
725 for (const auto &B : RD->bases()) { in AddVCallOffsets()
743 VCallAndVBaseOffsetBuilder::AddVBaseOffsets(const CXXRecordDecl *RD, in AddVBaseOffsets() argument
749 for (const auto &B : RD->bases()) { in AddVBaseOffsets()
973 void DeterminePrimaryVirtualBases(const CXXRecordDecl *RD,
979 void LayoutVTablesForVirtualBases(const CXXRecordDecl *RD,
1389 const CXXRecordDecl *RD = FirstBaseInPrimaryBaseChain; in IsOverriderUsed() local
1390 PrimaryBases.insert(RD); in IsOverriderUsed()
1395 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in IsOverriderUsed()
1423 RD = PrimaryBase; in IsOverriderUsed()
1473 const CXXRecordDecl *RD = Base.getBase(); in AddMethods() local
1474 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in AddMethods()
1516 for (const auto *MD : RD->methods()) { in AddMethods()
1698 const CXXRecordDecl *RD = Base.getBase(); in LayoutPrimaryAndSecondaryVTables() local
1699 if (RD == MostDerivedClass) { in LayoutPrimaryAndSecondaryVTables()
1722 BaseSubobject(RD, OffsetInLayoutClass), in LayoutPrimaryAndSecondaryVTables()
1725 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in LayoutPrimaryAndSecondaryVTables()
1744 RD = PrimaryBase; in LayoutPrimaryAndSecondaryVTables()
1760 const CXXRecordDecl *RD = Base.getBase(); in LayoutSecondaryVTables() local
1761 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in LayoutSecondaryVTables()
1764 for (const auto &B : RD->bases()) { in LayoutSecondaryVTables()
1810 const CXXRecordDecl *RD, CharUnits OffsetInLayoutClass, in DeterminePrimaryVirtualBases() argument
1812 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in DeterminePrimaryVirtualBases()
1842 for (const auto &B : RD->bases()) { in DeterminePrimaryVirtualBases()
1866 const CXXRecordDecl *RD, VisitedVirtualBasesSetTy &VBases) { in LayoutVTablesForVirtualBases() argument
1871 for (const auto &B : RD->bases()) { in LayoutVTablesForVirtualBases()
2083 const CXXRecordDecl *RD = I->second.getBase(); in dumpLayout() local
2084 ClassNames.insert(RD->getQualifiedNameAsString()); in dumpLayout()
2280 const CXXRecordDecl *RD = cast<CXXMethodDecl>(GD.getDecl())->getParent(); in getMethodVTableIndex() local
2282 computeVTableRelatedInformation(RD); in getMethodVTableIndex()
2290 ItaniumVTableContext::getVirtualBaseOffsetOffset(const CXXRecordDecl *RD, in getVirtualBaseOffsetOffset() argument
2292 ClassPairTy ClassPair(RD, VBase); in getVirtualBaseOffsetOffset()
2299 VCallAndVBaseOffsetBuilder Builder(RD, RD, /*FinalOverriders=*/nullptr, in getVirtualBaseOffsetOffset()
2300 BaseSubobject(RD, CharUnits::Zero()), in getVirtualBaseOffsetOffset()
2308 ClassPairTy ClassPair(RD, I->first); in getVirtualBaseOffsetOffset()
2333 ItaniumVTableContext::computeVTableRelatedInformation(const CXXRecordDecl *RD) { in computeVTableRelatedInformation() argument
2334 const VTableLayout *&Entry = VTableLayouts[RD]; in computeVTableRelatedInformation()
2340 ItaniumVTableBuilder Builder(*this, RD, CharUnits::Zero(), in computeVTableRelatedInformation()
2341 /*MostDerivedClassIsVirtual=*/0, RD); in computeVTableRelatedInformation()
2353 if (!RD->getNumVBases()) in computeVTableRelatedInformation()
2357 RD->vbases_begin()->getType()->getAsCXXRecordDecl(); in computeVTableRelatedInformation()
2359 if (VirtualBaseClassOffsetOffsets.count(std::make_pair(RD, VBase))) in computeVTableRelatedInformation()
2367 ClassPairTy ClassPair(RD, I->first); in computeVTableRelatedInformation()
2927 const CXXRecordDecl *RD, in GroupNewVirtualOverloads() argument
2938 for (const auto *MD : RD->methods()) { in GroupNewVirtualOverloads()
2954 static bool isDirectVBase(const CXXRecordDecl *Base, const CXXRecordDecl *RD) { in isDirectVBase() argument
2955 for (const auto &B : RD->bases()) { in isDirectVBase()
2965 const CXXRecordDecl *RD = Base.getBase(); in AddMethods() local
2966 if (!RD->isPolymorphic()) in AddMethods()
2969 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in AddMethods()
2977 if (isDirectVBase(NextBase, RD)) { in AddMethods()
3000 GroupNewVirtualOverloads(RD, VirtualMethods); in AddMethods()
3321 const CXXRecordDecl *RD, in computeVTablePaths() argument
3324 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in computeVTablePaths()
3328 Paths.push_back(new VPtrInfo(RD)); in computeVTablePaths()
3333 for (const auto &B : RD->bases()) { in computeVTablePaths()
3364 P->ReusingBase = RD; in computeVTablePaths()
3447 const CXXRecordDecl *RD, CharUnits Offset, in findPathForVPtr() argument
3450 if (RD == Info->BaseWithVPtr && Offset == Info->FullOffsetInMDC) { in findPathForVPtr()
3455 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in findPathForVPtr()
3460 SmallVector<CXXBaseSpecifier, 4> Bases(RD->bases_begin(), RD->bases_end()); in findPathForVPtr()
3484 const CXXRecordDecl *RD, in computeFullPathsForVFTables() argument
3487 const ASTRecordLayout &MostDerivedLayout = Context.getASTRecordLayout(RD); in computeFullPathsForVFTables()
3490 findPathForVPtr(Context, MostDerivedLayout, RD, CharUnits::Zero(), in computeFullPathsForVFTables()
3498 const CXXRecordDecl *RD) { in computeVTableRelatedInformation() argument
3499 assert(RD->isDynamicClass()); in computeVTableRelatedInformation()
3502 if (VFPtrLocations.count(RD)) in computeVTableRelatedInformation()
3508 computeVTablePaths(/*ForVBTables=*/false, RD, *VFPtrs); in computeVTableRelatedInformation()
3509 computeFullPathsForVFTables(Context, RD, *VFPtrs); in computeVTableRelatedInformation()
3510 VFPtrLocations[RD] = VFPtrs; in computeVTableRelatedInformation()
3515 VFTableBuilder Builder(*this, RD, *I); in computeVTableRelatedInformation()
3517 VFTableIdTy id(RD, (*I)->FullOffsetInMDC); in computeVTableRelatedInformation()
3538 dumpMethodLocations(RD, NewMethodLocations, llvm::outs()); in computeVTableRelatedInformation()
3542 const CXXRecordDecl *RD, const MethodVFTableLocationsTy &NewMethods, in dumpMethodLocations() argument
3571 RD->printQualifiedName(Out); in dumpMethodLocations()
3605 const CXXRecordDecl *RD) { in computeVBTableRelatedInformation() argument
3611 VirtualBaseInfo *&Entry = VBaseInfo[RD]; in computeVBTableRelatedInformation()
3617 computeVTablePaths(/*ForVBTables=*/true, RD, VBI->VBPtrPaths); in computeVBTableRelatedInformation()
3620 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD); in computeVBTableRelatedInformation()
3633 for (const auto &VB : RD->vbases()) { in computeVBTableRelatedInformation()
3650 MicrosoftVTableContext::enumerateVBTables(const CXXRecordDecl *RD) { in enumerateVBTables() argument
3651 return computeVBTableRelatedInformation(RD)->VBPtrPaths; in enumerateVBTables()
3655 MicrosoftVTableContext::getVFPtrOffsets(const CXXRecordDecl *RD) { in getVFPtrOffsets() argument
3656 computeVTableRelatedInformation(RD); in getVFPtrOffsets()
3658 assert(VFPtrLocations.count(RD) && "Couldn't find vfptr locations"); in getVFPtrOffsets()
3659 return *VFPtrLocations[RD]; in getVFPtrOffsets()
3663 MicrosoftVTableContext::getVFTableLayout(const CXXRecordDecl *RD, in getVFTableLayout() argument
3665 computeVTableRelatedInformation(RD); in getVFTableLayout()
3667 VFTableIdTy id(RD, VFPtrOffset); in getVFTableLayout()
3683 const CXXRecordDecl *RD = cast<CXXMethodDecl>(GD.getDecl())->getParent(); in getMethodVFTableLocation() local
3685 computeVTableRelatedInformation(RD); in getMethodVFTableLocation()