Lines Matching refs:MD

133   OverriderInfo getOverrider(const CXXMethodDecl *MD, 
135 assert(OverridersMap.count(std::make_pair(MD, BaseOffset)) &&
138 return OverridersMap.lookup(std::make_pair(MD, BaseOffset));
174 const CXXMethodDecl *MD = I->first;
180 assert(SubobjectOffsets.count(std::make_pair(MD->getParent(),
184 CharUnits BaseOffset = SubobjectOffsets[std::make_pair(MD->getParent(),
198 OverriderInfo& Overrider = OverridersMap[std::make_pair(MD, BaseOffset)];
406 const CXXMethodDecl *MD = *I;
408 if (!MD->isVirtual())
411 OverriderInfo Overrider = getOverrider(MD, Base.getBaseOffset());
413 Out << " " << MD->getQualifiedNameAsString() << " - (";
419 Offset = ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD);
451 bool AddVCallOffset(const CXXMethodDecl *MD, CharUnits OffsetOffset);
455 CharUnits getVCallOffsetOffset(const CXXMethodDecl *MD);
504 bool VCallOffsetMap::AddVCallOffset(const CXXMethodDecl *MD,
508 if (MethodsCanShareVCallOffset(Offsets[I].first, MD))
513 Offsets.push_back(MethodAndOffsetPairTy(MD, OffsetOffset));
517 CharUnits VCallOffsetMap::getVCallOffsetOffset(const CXXMethodDecl *MD) {
520 if (MethodsCanShareVCallOffset(Offsets[I].first, MD))
689 const CXXMethodDecl *MD = *I;
691 if (!MD->isVirtual())
698 if (!VCallOffsets.AddVCallOffset(MD, OffsetOffset))
706 Overriders->getOverrider(MD, Base.getBaseOffset());
877 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk);
902 ComputeThisAdjustment(const CXXMethodDecl *MD,
908 void AddMethod(const CXXMethodDecl *MD, ReturnAdjustment ReturnAdjustment);
1065 void ItaniumVTableBuilder::AddThunk(const CXXMethodDecl *MD,
1070 SmallVectorImpl<ThunkInfo> &ThunksVector = Thunks[MD];
1088 visitAllOverriddenMethods(const CXXMethodDecl *MD, VisitorTy &Visitor) {
1089 assert(MD->isVirtual() && "Method is not virtual!");
1091 for (CXXMethodDecl::method_iterator I = MD->begin_overridden_methods(),
1092 E = MD->end_overridden_methods(); I != E; ++I) {
1104 bool visit(const CXXMethodDecl *MD) {
1106 return Methods->insert(MD);
1114 ComputeAllOverriddenMethods(const CXXMethodDecl *MD,
1117 visitAllOverriddenMethods(MD, Collector);
1125 const CXXMethodDecl *MD = I->first;
1136 Overriders.getOverrider(MD, MethodInfo.BaseOffset);
1150 ComputeThisAdjustment(MD, MethodInfo.BaseOffsetInLayoutClass, Overrider);
1158 if (isa<CXXDestructorDecl>(MD)) {
1176 const CXXMethodDecl *MD;
1182 MD = Component.getFunctionDecl();
1185 MD = Component.getDestructorDecl();
1192 if (MD->getParent() == MostDerivedClass)
1193 AddThunk(MD, Thunk);
1269 const CXXMethodDecl *MD, CharUnits BaseOffsetInLayoutClass,
1275 BaseSubobject OverriddenBaseSubobject(MD->getParent(),
1308 VCallOffsets.getVCallOffsetOffset(MD).getQuantity();
1317 void ItaniumVTableBuilder::AddMethod(const CXXMethodDecl *MD,
1319 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
1332 Components.push_back(VTableComponent::MakeFunction(MD));
1348 const CXXMethodDecl *MD,
1350 if (Bases.count(MD->getParent()))
1353 for (CXXMethodDecl::method_iterator I = MD->begin_overridden_methods(),
1354 E = MD->end_overridden_methods(); I != E; ++I) {
1433 FindNearestOverriddenMethod(const CXXMethodDecl *MD,
1436 ComputeAllOverriddenMethods(MD, OverriddenMethods);
1514 const CXXMethodDecl *MD = *I;
1516 if (!MD->isVirtual())
1521 Overriders.getOverrider(MD, Base.getBaseOffset());
1527 FindNearestOverriddenMethod(MD, PrimaryBases)) {
1528 if (ComputeReturnAdjustmentBaseOffset(Context, MD,
1539 assert(!MethodInfoMap.count(MD) &&
1542 MethodInfoMap.insert(std::make_pair(MD, MethodInfo));
1549 if (!isBuildingConstructorVTable() && OverriddenMD != MD) {
1558 // There's no return adjustment from OverriddenMD and MD,
1559 // but that doesn't mean there isn't one between MD and
1562 ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD);
1576 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
1577 if (MD->isImplicit()) {
1589 NewVirtualFunctions.push_back(MD);
1597 const CXXMethodDecl *MD = *I;
1601 Overriders.getOverrider(MD, Base.getBaseOffset());
1607 assert(!MethodInfoMap.count(MD) &&
1609 MethodInfoMap.insert(std::make_pair(MD, MethodInfo));
1625 ComputeReturnAdjustmentBaseOffset(Context, OverriderMD, MD);
1701 const CXXMethodDecl *MD = I->first;
1703 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
1709 MethodVTableIndices[MD] = MI.VTableIndex - AddressPoint;
1980 const CXXMethodDecl *MD = Component.getFunctionDecl();
1984 MD);
1986 if (MD->isPure())
1989 if (MD->isDeleted())
2060 const CXXMethodDecl *MD = Component.getUnusedFunctionDecl();
2064 MD);
2066 if (MD->isPure())
2145 const CXXMethodDecl *MD = I->first;
2148 MD);
2150 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD));
2157 const CXXMethodDecl *MD = I->second;
2159 ThunkInfoVectorTy ThunksVector = Thunks[MD];
2208 const CXXMethodDecl *MD = *i;
2211 if (!MD->isVirtual())
2216 MD);
2218 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
2225 assert(MethodVTableIndices.count(MD));
2226 IndicesMap[MethodVTableIndices[MD]] = MethodName;
2512 void AddThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk) {
2513 SmallVector<ThunkInfo, 1> &ThunksVector = Thunks[MD];
2526 CharUnits ComputeThisOffset(const CXXMethodDecl *MD,
2535 void AddMethod(const CXXMethodDecl *MD, ThunkInfo TI) {
2536 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
2543 Components.push_back(VTableComponent::MakeFunction(MD));
2564 const CXXMethodDecl *MD = I->first;
2568 if (MD->getParent() != MostDerivedClass || MI.Shadowed)
2572 if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
2575 MethodVFTableLocations[MD] = Loc;
2658 VFTableBuilder::ComputeThisOffset(const CXXMethodDecl *MD,
2662 visitAllOverriddenMethods(MD, Collector);
2667 // This will hold the smallest this offset among overridees of MD.
2708 if (isa<CXXDestructorDecl>(MD)) {
2788 const CXXMethodDecl *MD = *I;
2789 if (!MD->isVirtual())
2795 std::make_pair(MD->getDeclName(), Groups.size()));
2797 Groups.push_back(MethodGroup(1, MD));
2799 Groups[J->second].push_back(MD);
2855 const CXXMethodDecl *MD = VirtualMethods[I];
2858 Overriders.getOverrider(MD, Base.getBaseOffset());
2865 FindNearestOverriddenMethod(MD, VisitedBases)) {
2876 CharUnits TI = ComputeThisOffset(MD, Base, Overrider);
2888 AddThunk(MD, VTableThunks[OverriddenMethodInfo.VFTableIndex]);
2891 if (MD->getResultType() == OverriddenMD->getResultType()) {
2898 assert(!MethodInfoMap.count(MD) &&
2900 MethodInfoMap.insert(std::make_pair(MD, MI));
2924 AddThunk(MD, VTableThunks[SubOverrideMI.VFTableIndex]);
2929 MD->size_overridden_methods()) {
2936 // If we got here, MD is a method not seen in any of the sub-bases or
2942 assert(!MethodInfoMap.count(MD) &&
2944 MethodInfoMap.insert(std::make_pair(MD, MI));
2954 ComputeReturnAdjustmentBaseOffset(Context, OverriderMD, MD);
2972 ForceThunk ? MD : 0));
3052 const CXXMethodDecl *MD = Component.getFunctionDecl();
3055 PredefinedExpr::PrettyFunctionNoVirtual, MD);
3057 if (MD->isPure())
3060 if (MD->isDeleted()) {
3061 ErrorUnsupported("deleted methods", MD->getLocation());
3111 const CXXMethodDecl *MD = I->first;
3113 PredefinedExpr::PrettyFunctionNoVirtual, MD);
3115 MethodNamesAndDecls.insert(std::make_pair(MethodName, MD));
3123 const CXXMethodDecl *MD = I->second;
3125 ThunkInfoVectorTy ThunksVector = Thunks[MD];
3308 const CXXMethodDecl *MD = cast<const CXXMethodDecl>(I->first.getDecl());
3309 assert(MD->isVirtual());
3312 PredefinedExpr::PrettyFunctionNoVirtual, MD);
3314 if (isa<CXXDestructorDecl>(MD)) {