• Home
  • Raw
  • Download

Lines Matching refs:MD

139   OverriderInfo getOverrider(const CXXMethodDecl *MD,   in getOverrider()  argument
141 assert(OverridersMap.count(std::make_pair(MD, BaseOffset)) && in getOverrider()
144 return OverridersMap.lookup(std::make_pair(MD, BaseOffset)); in getOverrider()
180 const CXXMethodDecl *MD = I->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 (!MD->isVirtual()) 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);
512 bool VCallOffsetMap::AddVCallOffset(const CXXMethodDecl *MD, in AddVCallOffset() argument
516 if (MethodsCanShareVCallOffset(Offsets[I].first, MD)) in AddVCallOffset()
521 Offsets.push_back(MethodAndOffsetPairTy(MD, OffsetOffset)); in AddVCallOffset()
525 CharUnits VCallOffsetMap::getVCallOffsetOffset(const CXXMethodDecl *MD) { in getVCallOffsetOffset() argument
528 if (MethodsCanShareVCallOffset(Offsets[I].first, MD)) in getVCallOffsetOffset()
695 for (const auto *MD : RD->methods()) { in AddVCallOffsets() local
696 if (!MD->isVirtual()) in AddVCallOffsets()
703 if (!VCallOffsets.AddVCallOffset(MD, OffsetOffset)) in AddVCallOffsets()
711 Overriders->getOverrider(MD, Base.getBaseOffset()); in AddVCallOffsets()
879 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk);
904 ComputeThisAdjustment(const CXXMethodDecl *MD,
910 void AddMethod(const CXXMethodDecl *MD, ReturnAdjustment ReturnAdjustment);
1067 void ItaniumVTableBuilder::AddThunk(const CXXMethodDecl *MD, in AddThunk() argument
1072 SmallVectorImpl<ThunkInfo> &ThunksVector = Thunks[MD]; in AddThunk()
1090 visitAllOverriddenMethods(const CXXMethodDecl *MD, VisitorTy &Visitor) { in visitAllOverriddenMethods() argument
1091 assert(MD->isVirtual() && "Method is not virtual!"); in visitAllOverriddenMethods()
1093 for (CXXMethodDecl::method_iterator I = MD->begin_overridden_methods(), in visitAllOverriddenMethods()
1094 E = MD->end_overridden_methods(); I != E; ++I) { in visitAllOverriddenMethods()
1106 bool visit(const CXXMethodDecl *MD) { in visit()
1108 return Methods->insert(MD); in visit()
1116 ComputeAllOverriddenMethods(const CXXMethodDecl *MD, in ComputeAllOverriddenMethods() argument
1119 visitAllOverriddenMethods(MD, Collector); in ComputeAllOverriddenMethods()
1127 const CXXMethodDecl *MD = I->first; in ComputeThisAdjustments() local
1138 Overriders.getOverrider(MD, MethodInfo.BaseOffset); in ComputeThisAdjustments()
1152 ComputeThisAdjustment(MD, MethodInfo.BaseOffsetInLayoutClass, Overrider); in ComputeThisAdjustments()
1160 if (isa<CXXDestructorDecl>(MD)) { in ComputeThisAdjustments()
1178 const CXXMethodDecl *MD; in ComputeThisAdjustments() local
1184 MD = Component.getFunctionDecl(); in ComputeThisAdjustments()
1187 MD = Component.getDestructorDecl(); in ComputeThisAdjustments()
1194 if (MD->getParent() == MostDerivedClass) in ComputeThisAdjustments()
1195 AddThunk(MD, Thunk); in ComputeThisAdjustments()
1271 const CXXMethodDecl *MD, CharUnits BaseOffsetInLayoutClass, in ComputeThisAdjustment() argument
1277 BaseSubobject OverriddenBaseSubobject(MD->getParent(), in ComputeThisAdjustment()
1310 VCallOffsets.getVCallOffsetOffset(MD).getQuantity(); in ComputeThisAdjustment()
1319 void ItaniumVTableBuilder::AddMethod(const CXXMethodDecl *MD, in AddMethod() argument
1321 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethod()
1334 Components.push_back(VTableComponent::MakeFunction(MD)); in AddMethod()
1350 const CXXMethodDecl *MD, in OverridesIndirectMethodInBases() argument
1352 if (Bases.count(MD->getParent())) in OverridesIndirectMethodInBases()
1355 for (CXXMethodDecl::method_iterator I = MD->begin_overridden_methods(), in OverridesIndirectMethodInBases()
1356 E = MD->end_overridden_methods(); I != E; ++I) { in OverridesIndirectMethodInBases()
1435 FindNearestOverriddenMethod(const CXXMethodDecl *MD, in FindNearestOverriddenMethod() argument
1438 ComputeAllOverriddenMethods(MD, OverriddenMethods); in FindNearestOverriddenMethod()
1514 for (const auto *MD : RD->methods()) { in AddMethods() local
1515 if (!MD->isVirtual()) in AddMethods()
1520 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
1526 FindNearestOverriddenMethod(MD, PrimaryBases)) { in AddMethods()
1527 if (ComputeReturnAdjustmentBaseOffset(Context, MD, in AddMethods()
1538 assert(!MethodInfoMap.count(MD) && in AddMethods()
1541 MethodInfoMap.insert(std::make_pair(MD, MethodInfo)); in AddMethods()
1548 if (!isBuildingConstructorVTable() && OverriddenMD != MD) { in AddMethods()
1561 ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD); in AddMethods()
1575 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethods()
1576 if (MD->isImplicit()) { in AddMethods()
1588 NewVirtualFunctions.push_back(MD); in AddMethods()
1596 const CXXMethodDecl *MD = *I; in AddMethods() local
1600 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
1606 assert(!MethodInfoMap.count(MD) && in AddMethods()
1608 MethodInfoMap.insert(std::make_pair(MD, MethodInfo)); in AddMethods()
1624 ComputeReturnAdjustmentBaseOffset(Context, OverriderMD, MD); in AddMethods()
1700 const CXXMethodDecl *MD = I->first; in LayoutPrimaryAndSecondaryVTables() local
1702 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in LayoutPrimaryAndSecondaryVTables()
1708 MethodVTableIndices[MD] = MI.VTableIndex - AddressPoint; in LayoutPrimaryAndSecondaryVTables()
1963 const CXXMethodDecl *MD = Component.getFunctionDecl(); in dumpLayout() local
1967 MD); in dumpLayout()
1969 if (MD->isPure()) in dumpLayout()
1972 if (MD->isDeleted()) in dumpLayout()
2043 const CXXMethodDecl *MD = Component.getUnusedFunctionDecl(); in dumpLayout() local
2047 MD); in dumpLayout()
2049 if (MD->isPure()) in dumpLayout()
2130 const CXXMethodDecl *MD = I->first; in dumpLayout() local
2133 MD); in dumpLayout()
2135 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD)); in dumpLayout()
2142 const CXXMethodDecl *MD = I->second; in dumpLayout() local
2144 ThunkInfoVectorTy ThunksVector = Thunks[MD]; in dumpLayout()
2194 for (const auto *MD : MostDerivedClass->methods()) { in dumpLayout() local
2196 if (!MD->isVirtual()) in dumpLayout()
2201 MD); in dumpLayout()
2203 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in dumpLayout()
2210 assert(MethodVTableIndices.count(MD)); in dumpLayout()
2211 IndicesMap[MethodVTableIndices[MD]] = MethodName; in dumpLayout()
2494 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk) { in AddThunk() argument
2495 SmallVector<ThunkInfo, 1> &ThunksVector = Thunks[MD]; in AddThunk()
2514 void AddMethod(const CXXMethodDecl *MD, ThunkInfo TI) { in AddMethod() argument
2517 AddThunk(MD, TI); in AddMethod()
2519 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in AddMethod()
2524 Components.push_back(VTableComponent::MakeFunction(MD)); in AddMethod()
2528 bool NeedsReturnAdjustingThunk(const CXXMethodDecl *MD);
2548 const CXXMethodDecl *MD = I->first; in LayoutVFTable() local
2552 if (MD->getParent() != MostDerivedClass || MI.Shadowed) in LayoutVFTable()
2556 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { in LayoutVFTable()
2559 MethodVFTableLocations[MD] = Loc; in LayoutVFTable()
2777 for (const auto *MD : RD->methods()) { in GroupNewVirtualOverloads() local
2781 std::make_pair(MD->getDeclName(), Groups.size())); in GroupNewVirtualOverloads()
2784 if (MD->isVirtual()) in GroupNewVirtualOverloads()
2785 Groups[J->second].push_back(MD); in GroupNewVirtualOverloads()
2795 bool VFTableBuilder::NeedsReturnAdjustingThunk(const CXXMethodDecl *MD) { in NeedsReturnAdjustingThunk() argument
2797 ComputeAllOverriddenMethods(MD, OverriddenMethods); in NeedsReturnAdjustingThunk()
2803 ComputeReturnAdjustmentBaseOffset(Context, MD, OverriddenMD); in NeedsReturnAdjustingThunk()
2867 const CXXMethodDecl *MD = VirtualMethods[I]; in AddMethods() local
2870 Overriders.getOverrider(MD, Base.getBaseOffset()); in AddMethods()
2873 FindNearestOverriddenMethod(MD, VisitedBases); in AddMethods()
2880 if ((OverriddenMD || OverriderMD != MD) && in AddMethods()
2895 if (!NeedsReturnAdjustingThunk(MD)) { in AddMethods()
2902 assert(!MethodInfoMap.count(MD) && in AddMethods()
2904 MethodInfoMap.insert(std::make_pair(MD, MI)); in AddMethods()
2915 !(MD == OverriderMD && ThisAdjustmentOffset.isEmpty()); in AddMethods()
2917 MD->size_overridden_methods()) { in AddMethods()
2931 assert(!MethodInfoMap.count(MD) && in AddMethods()
2933 MethodInfoMap.insert(std::make_pair(MD, MI)); in AddMethods()
2941 ComputeReturnAdjustmentBaseOffset(Context, OverriderMD, MD); in AddMethods()
2959 ReturnAdjustingThunk ? MD : nullptr)); in AddMethods()
3032 const CXXMethodDecl *MD = Component.getFunctionDecl(); in dumpLayout() local
3037 PredefinedExpr::PrettyFunctionNoVirtual, MD); in dumpLayout()
3039 if (MD->isPure()) in dumpLayout()
3042 if (MD->isDeleted()) { in dumpLayout()
3043 ErrorUnsupported("deleted methods", MD->getLocation()); in dumpLayout()
3093 const CXXMethodDecl *MD = I->first; in dumpLayout() local
3095 PredefinedExpr::PrettyFunctionNoVirtual, MD); in dumpLayout()
3097 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD)); in dumpLayout()
3105 const CXXMethodDecl *MD = I->second; in dumpLayout() local
3107 ThunkInfoVectorTy ThunksVector = Thunks[MD]; in dumpLayout()
3348 const CXXMethodDecl *MD = cast<const CXXMethodDecl>(I->first.getDecl()); in dumpMethodLocations() local
3349 assert(MD->isVirtual()); in dumpMethodLocations()
3352 PredefinedExpr::PrettyFunctionNoVirtual, MD); in dumpMethodLocations()
3354 if (isa<CXXDestructorDecl>(MD)) { in dumpMethodLocations()