Lines Matching refs:MD

140   OverriderInfo getOverrider(const CXXMethodDecl *MD,  in getOverrider()  argument
142 assert(OverridersMap.count(std::make_pair(MD, BaseOffset)) && in getOverrider()
145 return OverridersMap.lookup(std::make_pair(MD, BaseOffset)); in getOverrider()
180 const CXXMethodDecl *MD = Overrider.first; in FinalOverriders() local
185 assert(SubobjectOffsets.count(std::make_pair(MD->getParent(), in FinalOverriders()
189 CharUnits BaseOffset = SubobjectOffsets[std::make_pair(MD->getParent(), in FinalOverriders()
203 OverriderInfo& Overrider = OverridersMap[std::make_pair(MD, BaseOffset)]; in FinalOverriders()
410 for (const auto *MD : RD->methods()) { in dump() local
411 if (!VTableContextBase::hasVtableSlot(MD)) in dump()
413 MD = MD->getCanonicalDecl(); in dump()
415 OverriderInfo Overrider = getOverrider(MD, Base.getBaseOffset()); in dump()
418 MD->printQualifiedName(Out); in dump()
425 Offset = ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD); in dump()
459 bool AddVCallOffset(const CXXMethodDecl *MD, CharUnits OffsetOffset);
463 CharUnits getVCallOffsetOffset(const CXXMethodDecl *MD);
508 bool VCallOffsetMap::AddVCallOffset(const CXXMethodDecl *MD, in AddVCallOffset() argument
512 if (MethodsCanShareVCallOffset(OffsetPair.first, MD)) in AddVCallOffset()
517 Offsets.push_back(MethodAndOffsetPairTy(MD, OffsetOffset)); in AddVCallOffset()
521 CharUnits VCallOffsetMap::getVCallOffsetOffset(const CXXMethodDecl *MD) { in getVCallOffsetOffset() argument
524 if (MethodsCanShareVCallOffset(OffsetPair.first, MD)) in getVCallOffsetOffset()
699 for (const auto *MD : RD->methods()) { in AddVCallOffsets() local
700 if (!VTableContextBase::hasVtableSlot(MD)) in AddVCallOffsets()
702 MD = MD->getCanonicalDecl(); in AddVCallOffsets()
708 if (!VCallOffsets.AddVCallOffset(MD, OffsetOffset)) in AddVCallOffsets()
716 Overriders->getOverrider(MD, Base.getBaseOffset()); in AddVCallOffsets()
885 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk);
910 ComputeThisAdjustment(const CXXMethodDecl *MD,
916 void AddMethod(const CXXMethodDecl *MD, ReturnAdjustment ReturnAdjustment);
1065 void ItaniumVTableBuilder::AddThunk(const CXXMethodDecl *MD, in AddThunk() argument
1070 SmallVectorImpl<ThunkInfo> &ThunksVector = Thunks[MD]; in AddThunk()
1087 visitAllOverriddenMethods(const CXXMethodDecl *MD, VisitorTy &Visitor) { in visitAllOverriddenMethods() argument
1088 assert(VTableContextBase::hasVtableSlot(MD) && "Method is not virtual!"); in visitAllOverriddenMethods()
1090 for (const CXXMethodDecl *OverriddenMD : MD->overridden_methods()) { in visitAllOverriddenMethods()
1100 ComputeAllOverriddenMethods(const CXXMethodDecl *MD, in ComputeAllOverriddenMethods() argument
1102 auto OverriddenMethodsCollector = [&](const CXXMethodDecl *MD) { in ComputeAllOverriddenMethods() argument
1104 return OverriddenMethods.insert(MD).second; in ComputeAllOverriddenMethods()
1106 visitAllOverriddenMethods(MD, OverriddenMethodsCollector); in ComputeAllOverriddenMethods()
1113 const CXXMethodDecl *MD = MI.first; in ComputeThisAdjustments() local
1124 Overriders.getOverrider(MD, MethodInfo.BaseOffset); in ComputeThisAdjustments()
1138 ComputeThisAdjustment(MD, MethodInfo.BaseOffsetInLayoutClass, Overrider); in ComputeThisAdjustments()
1146 if (isa<CXXDestructorDecl>(MD)) { in ComputeThisAdjustments()
1163 const CXXMethodDecl *MD; in ComputeThisAdjustments() local
1169 MD = Component.getFunctionDecl(); in ComputeThisAdjustments()
1172 MD = Component.getDestructorDecl(); in ComputeThisAdjustments()
1179 if (MD->getParent() == MostDerivedClass) in ComputeThisAdjustments()
1180 AddThunk(MD, Thunk); in ComputeThisAdjustments()
1255 const CXXMethodDecl *MD, CharUnits BaseOffsetInLayoutClass, in ComputeThisAdjustment() argument
1261 BaseSubobject OverriddenBaseSubobject(MD->getParent(), in ComputeThisAdjustment()
1294 VCallOffsets.getVCallOffsetOffset(MD).getQuantity(); in ComputeThisAdjustment()
1303 void ItaniumVTableBuilder::AddMethod(const CXXMethodDecl *MD, in AddMethod() argument
1305 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethod()
1318 Components.push_back(VTableComponent::MakeFunction(MD)); in AddMethod()
1334 const CXXMethodDecl *MD, in OverridesIndirectMethodInBases() argument
1336 if (Bases.count(MD->getParent())) in OverridesIndirectMethodInBases()
1339 for (const CXXMethodDecl *OverriddenMD : MD->overridden_methods()) { in OverridesIndirectMethodInBases()
1416 FindNearestOverriddenMethod(const CXXMethodDecl *MD, in FindNearestOverriddenMethod() argument
1419 ComputeAllOverriddenMethods(MD, OverriddenMethods); in FindNearestOverriddenMethod()
1491 for (const auto *MD : RD->methods()) { in AddMethods() local
1492 if (!ItaniumVTableContext::hasVtableSlot(MD)) in AddMethods()
1494 MD = MD->getCanonicalDecl(); in AddMethods()
1498 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
1504 FindNearestOverriddenMethod(MD, PrimaryBases)) { in AddMethods()
1505 if (ComputeReturnAdjustmentBaseOffset(Context, MD, in AddMethods()
1516 assert(!MethodInfoMap.count(MD) && in AddMethods()
1519 MethodInfoMap.insert(std::make_pair(MD, MethodInfo)); in AddMethods()
1526 if (!isBuildingConstructorVTable() && OverriddenMD != MD) { in AddMethods()
1539 ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD); in AddMethods()
1553 if (MD->isImplicit()) in AddMethods()
1554 NewImplicitVirtualFunctions.push_back(MD); in AddMethods()
1556 NewVirtualFunctions.push_back(MD); in AddMethods()
1578 for (const CXXMethodDecl *MD : NewVirtualFunctions) { in AddMethods() local
1581 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
1587 assert(!MethodInfoMap.count(MD) && in AddMethods()
1589 MethodInfoMap.insert(std::make_pair(MD, MethodInfo)); in AddMethods()
1605 ComputeReturnAdjustmentBaseOffset(Context, OverriderMD, MD); in AddMethods()
1683 const CXXMethodDecl *MD = I.first; in LayoutPrimaryAndSecondaryVTables() local
1685 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in LayoutPrimaryAndSecondaryVTables()
1691 MethodVTableIndices[MD] = MI.VTableIndex - AddressPoint; in LayoutPrimaryAndSecondaryVTables()
1949 const CXXMethodDecl *MD = Component.getFunctionDecl(); in dumpLayout() local
1953 MD); in dumpLayout()
1955 if (MD->isPure()) in dumpLayout()
1958 if (MD->isDeleted()) in dumpLayout()
2029 const CXXMethodDecl *MD = Component.getUnusedFunctionDecl(); in dumpLayout() local
2033 MD); in dumpLayout()
2035 if (MD->isPure()) in dumpLayout()
2109 const CXXMethodDecl *MD = I.first; in dumpLayout() local
2112 MD); in dumpLayout()
2114 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD)); in dumpLayout()
2119 const CXXMethodDecl *MD = I.second; in dumpLayout() local
2121 ThunkInfoVectorTy ThunksVector = Thunks[MD]; in dumpLayout()
2170 for (const auto *MD : MostDerivedClass->methods()) { in dumpLayout() local
2172 if (!ItaniumVTableContext::hasVtableSlot(MD)) in dumpLayout()
2174 MD = MD->getCanonicalDecl(); in dumpLayout()
2178 MD); in dumpLayout()
2180 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in dumpLayout()
2187 assert(MethodVTableIndices.count(MD)); in dumpLayout()
2188 IndicesMap[MethodVTableIndices[MD]] = MethodName; in dumpLayout()
2260 bool VTableContextBase::hasVtableSlot(const CXXMethodDecl *MD) { in hasVtableSlot() argument
2261 return MD->isVirtual() && !MD->isConsteval(); in hasVtableSlot()
2497 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk) { in AddThunk() argument
2498 SmallVector<ThunkInfo, 1> &ThunksVector = Thunks[MD]; in AddThunk()
2516 void AddMethod(const CXXMethodDecl *MD, ThunkInfo TI) { in AddMethod() argument
2519 AddThunk(MD, TI); in AddMethod()
2521 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethod()
2526 Components.push_back(VTableComponent::MakeFunction(MD)); in AddMethod()
2550 const CXXMethodDecl *MD = I.first; in LayoutVFTable() local
2552 assert(MD == MD->getCanonicalDecl()); in LayoutVFTable()
2556 if (MD->getParent() != MostDerivedClass || MI.Shadowed) in LayoutVFTable()
2560 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in LayoutVFTable()
2563 MethodVFTableLocations[MD] = Loc; in LayoutVFTable()
2924 if (const auto *MD = dyn_cast<CXXMethodDecl>(ND)) in GroupNewVirtualOverloads() local
2925 if (MicrosoftVTableContext::hasVtableSlot(MD)) in GroupNewVirtualOverloads()
2926 Groups[J->second].push_back(MD->getCanonicalDecl()); in GroupNewVirtualOverloads()
2990 for (const CXXMethodDecl *MD : VirtualMethods) { in AddMethods() local
2992 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
2995 FindNearestOverriddenMethod(MD, VisitedBases); in AddMethods()
3002 if ((OverriddenMD || FinalOverriderMD != MD) && in AddMethods()
3030 Context, MD, OverriddenMD).isEmpty() || in AddMethods()
3039 assert(!MethodInfoMap.count(MD) && in AddMethods()
3041 MethodInfoMap.insert(std::make_pair(MD, MI)); in AddMethods()
3052 !(MD == FinalOverriderMD && ThisAdjustmentOffset.isEmpty()); in AddMethods()
3054 MD->size_overridden_methods()) { in AddMethods()
3067 assert(!MethodInfoMap.count(MD) && in AddMethods()
3069 MethodInfoMap.insert(std::make_pair(MD, MI)); in AddMethods()
3077 ComputeReturnAdjustmentBaseOffset(Context, FinalOverriderMD, MD); in AddMethods()
3096 ForceReturnAdjustmentMangling ? MD : nullptr)); in AddMethods()
3169 const CXXMethodDecl *MD = Component.getFunctionDecl(); in dumpLayout() local
3174 PredefinedExpr::PrettyFunctionNoVirtual, MD); in dumpLayout()
3176 if (MD->isPure()) in dumpLayout()
3179 if (MD->isDeleted()) in dumpLayout()
3227 const CXXMethodDecl *MD = I.first; in dumpLayout() local
3229 PredefinedExpr::PrettyFunctionNoVirtual, MD); in dumpLayout()
3231 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD)); in dumpLayout()
3236 const CXXMethodDecl *MD = MethodNameAndDecl.second; in dumpLayout() local
3238 ThunkInfoVectorTy ThunksVector = Thunks[MD]; in dumpLayout()
3520 for (const CXXMethodDecl *MD : Info.IntroducingObject->methods()) { in selectBestPath() local
3521 if (!MicrosoftVTableContext::hasVtableSlot(MD)) in selectBestPath()
3524 Overriders.getOverrider(MD->getCanonicalDecl(), BaseOffset); in selectBestPath()
3528 if (ComputeReturnAdjustmentBaseOffset(Context, OverridingMethod, MD) in selectBestPath()
3659 const CXXMethodDecl *MD = cast<const CXXMethodDecl>(I.first.getDecl()); in dumpMethodLocations() local
3660 assert(hasVtableSlot(MD)); in dumpMethodLocations()
3663 PredefinedExpr::PrettyFunctionNoVirtual, MD); in dumpMethodLocations()
3665 if (isa<CXXDestructorDecl>(MD)) { in dumpMethodLocations()