Lines Matching refs:MD

141   OverriderInfo getOverrider(const CXXMethodDecl *MD,  in getOverrider()  argument
143 assert(OverridersMap.count(std::make_pair(MD, BaseOffset)) && in getOverrider()
146 return OverridersMap.lookup(std::make_pair(MD, BaseOffset)); in getOverrider()
181 const CXXMethodDecl *MD = Overrider.first; in FinalOverriders() local
186 assert(SubobjectOffsets.count(std::make_pair(MD->getParent(), in FinalOverriders()
190 CharUnits BaseOffset = SubobjectOffsets[std::make_pair(MD->getParent(), in FinalOverriders()
204 OverriderInfo& Overrider = OverridersMap[std::make_pair(MD, BaseOffset)]; in FinalOverriders()
411 for (const auto *MD : RD->methods()) { in dump() local
412 if (!VTableContextBase::hasVtableSlot(MD)) in dump()
414 MD = MD->getCanonicalDecl(); in dump()
416 OverriderInfo Overrider = getOverrider(MD, Base.getBaseOffset()); in dump()
419 MD->printQualifiedName(Out); in dump()
426 Offset = ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD); in dump()
460 bool AddVCallOffset(const CXXMethodDecl *MD, CharUnits OffsetOffset);
464 CharUnits getVCallOffsetOffset(const CXXMethodDecl *MD);
509 bool VCallOffsetMap::AddVCallOffset(const CXXMethodDecl *MD, in AddVCallOffset() argument
513 if (MethodsCanShareVCallOffset(OffsetPair.first, MD)) in AddVCallOffset()
518 Offsets.push_back(MethodAndOffsetPairTy(MD, OffsetOffset)); in AddVCallOffset()
522 CharUnits VCallOffsetMap::getVCallOffsetOffset(const CXXMethodDecl *MD) { in getVCallOffsetOffset() argument
525 if (MethodsCanShareVCallOffset(OffsetPair.first, MD)) in getVCallOffsetOffset()
705 for (const auto *MD : RD->methods()) { in AddVCallOffsets() local
706 if (!VTableContextBase::hasVtableSlot(MD)) in AddVCallOffsets()
708 MD = MD->getCanonicalDecl(); in AddVCallOffsets()
714 if (!VCallOffsets.AddVCallOffset(MD, OffsetOffset)) in AddVCallOffsets()
722 Overriders->getOverrider(MD, Base.getBaseOffset()); in AddVCallOffsets()
891 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk);
916 ComputeThisAdjustment(const CXXMethodDecl *MD,
922 void AddMethod(const CXXMethodDecl *MD, ReturnAdjustment ReturnAdjustment);
1071 void ItaniumVTableBuilder::AddThunk(const CXXMethodDecl *MD, in AddThunk() argument
1076 SmallVectorImpl<ThunkInfo> &ThunksVector = Thunks[MD]; in AddThunk()
1093 visitAllOverriddenMethods(const CXXMethodDecl *MD, VisitorTy &Visitor) { in visitAllOverriddenMethods() argument
1094 assert(VTableContextBase::hasVtableSlot(MD) && "Method is not virtual!"); in visitAllOverriddenMethods()
1096 for (const CXXMethodDecl *OverriddenMD : MD->overridden_methods()) { in visitAllOverriddenMethods()
1106 ComputeAllOverriddenMethods(const CXXMethodDecl *MD, in ComputeAllOverriddenMethods() argument
1108 auto OverriddenMethodsCollector = [&](const CXXMethodDecl *MD) { in ComputeAllOverriddenMethods() argument
1110 return OverriddenMethods.insert(MD).second; in ComputeAllOverriddenMethods()
1112 visitAllOverriddenMethods(MD, OverriddenMethodsCollector); in ComputeAllOverriddenMethods()
1119 const CXXMethodDecl *MD = MI.first; in ComputeThisAdjustments() local
1130 Overriders.getOverrider(MD, MethodInfo.BaseOffset); in ComputeThisAdjustments()
1144 ComputeThisAdjustment(MD, MethodInfo.BaseOffsetInLayoutClass, Overrider); in ComputeThisAdjustments()
1152 if (isa<CXXDestructorDecl>(MD)) { in ComputeThisAdjustments()
1169 const CXXMethodDecl *MD; in ComputeThisAdjustments() local
1175 MD = Component.getFunctionDecl(); in ComputeThisAdjustments()
1178 MD = Component.getDestructorDecl(); in ComputeThisAdjustments()
1185 if (MD->getParent() == MostDerivedClass) in ComputeThisAdjustments()
1186 AddThunk(MD, Thunk); in ComputeThisAdjustments()
1261 const CXXMethodDecl *MD, CharUnits BaseOffsetInLayoutClass, in ComputeThisAdjustment() argument
1267 BaseSubobject OverriddenBaseSubobject(MD->getParent(), in ComputeThisAdjustment()
1300 VCallOffsets.getVCallOffsetOffset(MD).getQuantity(); in ComputeThisAdjustment()
1309 void ItaniumVTableBuilder::AddMethod(const CXXMethodDecl *MD, in AddMethod() argument
1311 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethod()
1324 Components.push_back(VTableComponent::MakeFunction(MD)); in AddMethod()
1340 const CXXMethodDecl *MD, in OverridesIndirectMethodInBases() argument
1342 if (Bases.count(MD->getParent())) in OverridesIndirectMethodInBases()
1345 for (const CXXMethodDecl *OverriddenMD : MD->overridden_methods()) { in OverridesIndirectMethodInBases()
1422 FindNearestOverriddenMethod(const CXXMethodDecl *MD, in FindNearestOverriddenMethod() argument
1425 ComputeAllOverriddenMethods(MD, OverriddenMethods); in FindNearestOverriddenMethod()
1496 for (const auto *MD : RD->methods()) { in AddMethods() local
1497 if (!ItaniumVTableContext::hasVtableSlot(MD)) in AddMethods()
1499 MD = MD->getCanonicalDecl(); in AddMethods()
1503 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
1509 FindNearestOverriddenMethod(MD, PrimaryBases)) { in AddMethods()
1510 if (ComputeReturnAdjustmentBaseOffset(Context, MD, in AddMethods()
1521 assert(!MethodInfoMap.count(MD) && in AddMethods()
1524 MethodInfoMap.insert(std::make_pair(MD, MethodInfo)); in AddMethods()
1531 if (!isBuildingConstructorVTable() && OverriddenMD != MD) { in AddMethods()
1544 ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD); in AddMethods()
1558 if (MD->isImplicit()) in AddMethods()
1559 NewImplicitVirtualFunctions.push_back(MD); in AddMethods()
1561 NewVirtualFunctions.push_back(MD); in AddMethods()
1585 for (const CXXMethodDecl *MD : NewVirtualFunctions) { in AddMethods() local
1588 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
1594 assert(!MethodInfoMap.count(MD) && in AddMethods()
1596 MethodInfoMap.insert(std::make_pair(MD, MethodInfo)); in AddMethods()
1612 ComputeReturnAdjustmentBaseOffset(Context, OverriderMD, MD); in AddMethods()
1691 const CXXMethodDecl *MD = I.first; in LayoutPrimaryAndSecondaryVTables() local
1693 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in LayoutPrimaryAndSecondaryVTables()
1699 MethodVTableIndices[MD] = MI.VTableIndex - AddressPoint; in LayoutPrimaryAndSecondaryVTables()
1957 const CXXMethodDecl *MD = Component.getFunctionDecl(); in dumpLayout() local
1960 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpLayout()
1962 if (MD->isPureVirtual()) in dumpLayout()
1965 if (MD->isDeleted()) in dumpLayout()
2036 const CXXMethodDecl *MD = Component.getUnusedFunctionDecl(); in dumpLayout() local
2039 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpLayout()
2041 if (MD->isPureVirtual()) in dumpLayout()
2115 const CXXMethodDecl *MD = I.first; in dumpLayout() local
2117 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpLayout()
2119 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD)); in dumpLayout()
2124 const CXXMethodDecl *MD = I.second; in dumpLayout() local
2126 ThunkInfoVectorTy ThunksVector = Thunks[MD]; in dumpLayout()
2175 for (const auto *MD : MostDerivedClass->methods()) { in dumpLayout() local
2177 if (!ItaniumVTableContext::hasVtableSlot(MD)) in dumpLayout()
2179 MD = MD->getCanonicalDecl(); in dumpLayout()
2182 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpLayout()
2184 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in dumpLayout()
2191 assert(MethodVTableIndices.count(MD)); in dumpLayout()
2192 IndicesMap[MethodVTableIndices[MD]] = MethodName; in dumpLayout()
2264 bool VTableContextBase::hasVtableSlot(const CXXMethodDecl *MD) { in hasVtableSlot() argument
2265 return MD->isVirtual() && !MD->isImmediateFunction(); in hasVtableSlot()
2501 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk) { in AddThunk() argument
2502 SmallVector<ThunkInfo, 1> &ThunksVector = Thunks[MD]; in AddThunk()
2520 void AddMethod(const CXXMethodDecl *MD, ThunkInfo TI) { in AddMethod() argument
2523 AddThunk(MD, TI); in AddMethod()
2525 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethod()
2530 Components.push_back(VTableComponent::MakeFunction(MD)); in AddMethod()
2554 const CXXMethodDecl *MD = I.first; in LayoutVFTable() local
2556 assert(MD == MD->getCanonicalDecl()); in LayoutVFTable()
2560 if (MD->getParent() != MostDerivedClass || MI.Shadowed) in LayoutVFTable()
2564 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in LayoutVFTable()
2567 MethodVFTableLocations[MD] = Loc; in LayoutVFTable()
2928 if (const auto *MD = dyn_cast<CXXMethodDecl>(ND)) in GroupNewVirtualOverloads() local
2929 if (MicrosoftVTableContext::hasVtableSlot(MD)) in GroupNewVirtualOverloads()
2930 Groups[J->second].push_back(MD->getCanonicalDecl()); in GroupNewVirtualOverloads()
2994 for (const CXXMethodDecl *MD : VirtualMethods) { in AddMethods() local
2996 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
2999 FindNearestOverriddenMethod(MD, VisitedBases); in AddMethods()
3006 if ((OverriddenMD || FinalOverriderMD != MD) && in AddMethods()
3034 Context, MD, OverriddenMD).isEmpty() || in AddMethods()
3043 assert(!MethodInfoMap.count(MD) && in AddMethods()
3045 MethodInfoMap.insert(std::make_pair(MD, MI)); in AddMethods()
3056 !(MD == FinalOverriderMD && ThisAdjustmentOffset.isEmpty()); in AddMethods()
3058 MD->size_overridden_methods()) { in AddMethods()
3071 assert(!MethodInfoMap.count(MD) && in AddMethods()
3073 MethodInfoMap.insert(std::make_pair(MD, MI)); in AddMethods()
3081 ComputeReturnAdjustmentBaseOffset(Context, FinalOverriderMD, MD); in AddMethods()
3100 ForceReturnAdjustmentMangling ? MD : nullptr)); in AddMethods()
3171 const CXXMethodDecl *MD = Component.getFunctionDecl(); in dumpLayout() local
3176 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpLayout()
3178 if (MD->isPureVirtual()) in dumpLayout()
3181 if (MD->isDeleted()) in dumpLayout()
3229 const CXXMethodDecl *MD = I.first; in dumpLayout() local
3231 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpLayout()
3233 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD)); in dumpLayout()
3238 const CXXMethodDecl *MD = MethodNameAndDecl.second; in dumpLayout() local
3240 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 PredefinedIdentKind::PrettyFunctionNoVirtual, MD); in dumpMethodLocations()
3665 if (isa<CXXDestructorDecl>(MD)) { in dumpMethodLocations()