Lines Matching refs:D2
100 Decl *D1, Decl *D2);
1381 VarDecl *D1, VarDecl *D2) { in IsStructurallyEquivalent() argument
1382 if (D1->getStorageClass() != D2->getStorageClass()) in IsStructurallyEquivalent()
1386 IdentifierInfo *Name2 = D2->getIdentifier(); in IsStructurallyEquivalent()
1390 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) in IsStructurallyEquivalent()
1393 return IsStructurallyEquivalent(Context, D1->getInit(), D2->getInit()); in IsStructurallyEquivalent()
1407 RecordDecl *D2 = Field2->getType()->castAs<RecordType>()->getDecl(); in IsStructurallyEquivalent() local
1408 return IsStructurallyEquivalent(Context, D1, D2); in IsStructurallyEquivalent()
1515 CXXRecordDecl *D1, CXXRecordDecl *D2) { in IsStructurallyEquivalentLambdas() argument
1516 assert(D1->isLambda() && D2->isLambda() && in IsStructurallyEquivalentLambdas()
1519 D2->getLambdaCallOperator())) in IsStructurallyEquivalentLambdas()
1528 RecordDecl *D1, RecordDecl *D2) { in IsRecordContextStructurallyEquivalent() argument
1534 DeclContext *DC2 = D2->getDeclContext()->getNonTransparentContext(); in IsRecordContextStructurallyEquivalent()
1568 static bool NameIsStructurallyEquivalent(const TagDecl &D1, const TagDecl &D2) { in NameIsStructurallyEquivalent() argument
1576 return IsStructurallyEquivalent(GetName(D1), GetName(D2)); in NameIsStructurallyEquivalent()
1581 RecordDecl *D1, RecordDecl *D2) { in IsStructurallyEquivalent() argument
1582 if (!NameIsStructurallyEquivalent(*D1, *D2)) { in IsStructurallyEquivalent()
1586 if (D1->isUnion() != D2->isUnion()) { in IsStructurallyEquivalent()
1588 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic( in IsStructurallyEquivalent()
1590 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1597 if (!D1->getDeclName() && !D2->getDeclName()) { in IsStructurallyEquivalent()
1604 D2)) { in IsStructurallyEquivalent()
1614 if (!IsRecordContextStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1620 const auto *Spec2 = dyn_cast<ClassTemplateSpecializationDecl>(D2); in IsStructurallyEquivalent()
1645 D2 = D2->getDefinition(); in IsStructurallyEquivalent()
1646 if (!D1 || !D2) in IsStructurallyEquivalent()
1655 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage()) in IsStructurallyEquivalent()
1660 if (D1->isBeingDefined() || D2->isBeingDefined()) in IsStructurallyEquivalent()
1664 if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) { in IsStructurallyEquivalent()
1679 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1682 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1683 Context.Diag2(D2->getLocation(), diag::note_odr_number_of_bases) in IsStructurallyEquivalent()
1699 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1702 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1714 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1717 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1735 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1740 Context.Diag2(D2->getLocation(), diag::note_odr_missing_friend); in IsStructurallyEquivalent()
1747 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1760 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1763 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1771 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1774 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1778 Context.Diag2(D2->getLocation(), diag::note_odr_missing_base); in IsStructurallyEquivalent()
1785 QualType D2Type = Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1786 RecordDecl::field_iterator Field2 = D2->field_begin(), in IsStructurallyEquivalent()
1787 Field2End = D2->field_end(); in IsStructurallyEquivalent()
1793 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1796 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1799 Context.Diag2(D2->getLocation(), diag::note_odr_missing_field); in IsStructurallyEquivalent()
1810 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic( in IsStructurallyEquivalent()
1812 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1825 EnumConstantDecl *D2) { in IsStructurallyEquivalent() argument
1827 const llvm::APSInt &ToVal = D2->getInitVal(); in IsStructurallyEquivalent()
1835 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1840 D2->getInitExpr()); in IsStructurallyEquivalent()
1845 EnumDecl *D1, EnumDecl *D2) { in IsStructurallyEquivalent() argument
1846 if (!NameIsStructurallyEquivalent(*D1, *D2)) { in IsStructurallyEquivalent()
1853 D2 = D2->getDefinition(); in IsStructurallyEquivalent()
1854 if (!D1 || !D2) in IsStructurallyEquivalent()
1857 EnumDecl::enumerator_iterator EC2 = D2->enumerator_begin(), in IsStructurallyEquivalent()
1858 EC2End = D2->enumerator_end(); in IsStructurallyEquivalent()
1864 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1867 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1870 Context.Diag2(D2->getLocation(), diag::note_odr_missing_enumerator); in IsStructurallyEquivalent()
1880 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1883 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1895 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic( in IsStructurallyEquivalent()
1897 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1945 TemplateTypeParmDecl *D2) { in IsStructurallyEquivalent() argument
1946 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1948 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1951 << D2->isParameterPack(); in IsStructurallyEquivalent()
1963 NonTypeTemplateParmDecl *D2) { in IsStructurallyEquivalent() argument
1964 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1966 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1969 << D2->isParameterPack(); in IsStructurallyEquivalent()
1977 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) { in IsStructurallyEquivalent()
1979 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1982 << D2->getType() << D1->getType(); in IsStructurallyEquivalent()
1994 TemplateTemplateParmDecl *D2) { in IsStructurallyEquivalent() argument
1995 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1997 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
2000 << D2->isParameterPack(); in IsStructurallyEquivalent()
2009 D2->getTemplateParameters()); in IsStructurallyEquivalent()
2013 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) { in IsTemplateDeclCommonStructurallyEquivalent() argument
2014 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsTemplateDeclCommonStructurallyEquivalent()
2017 if (D1->getNameAsString() != D2->getNameAsString()) in IsTemplateDeclCommonStructurallyEquivalent()
2020 D2->getTemplateParameters()); in IsTemplateDeclCommonStructurallyEquivalent()
2025 ClassTemplateDecl *D2) { in IsStructurallyEquivalent() argument
2027 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
2032 D2->getTemplatedDecl()); in IsStructurallyEquivalent()
2037 FunctionTemplateDecl *D2) { in IsStructurallyEquivalent() argument
2039 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
2044 D2->getTemplatedDecl()->getType()); in IsStructurallyEquivalent()
2049 TypeAliasTemplateDecl *D2) { in IsStructurallyEquivalent() argument
2051 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
2056 D2->getTemplatedDecl()); in IsStructurallyEquivalent()
2061 ConceptDecl *D2) { in IsStructurallyEquivalent() argument
2063 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
2068 D2->getConstraintExpr()); in IsStructurallyEquivalent()
2072 FriendDecl *D1, FriendDecl *D2) { in IsStructurallyEquivalent() argument
2073 if ((D1->getFriendType() && D2->getFriendDecl()) || in IsStructurallyEquivalent()
2074 (D1->getFriendDecl() && D2->getFriendType())) { in IsStructurallyEquivalent()
2077 if (D1->getFriendType() && D2->getFriendType()) in IsStructurallyEquivalent()
2080 D2->getFriendType()->getType()); in IsStructurallyEquivalent()
2081 if (D1->getFriendDecl() && D2->getFriendDecl()) in IsStructurallyEquivalent()
2083 D2->getFriendDecl()); in IsStructurallyEquivalent()
2088 TypedefNameDecl *D1, TypedefNameDecl *D2) { in IsStructurallyEquivalent() argument
2089 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
2093 D2->getUnderlyingType()); in IsStructurallyEquivalent()
2097 FunctionDecl *D1, FunctionDecl *D2) { in IsStructurallyEquivalent() argument
2098 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
2102 if (!D2->isOverloadedOperator()) in IsStructurallyEquivalent()
2104 if (D1->getOverloadedOperator() != D2->getOverloadedOperator()) in IsStructurallyEquivalent()
2109 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) in IsStructurallyEquivalent()
2116 ObjCIvarDecl *D1, ObjCIvarDecl *D2, in IsStructurallyEquivalent() argument
2118 if (D1->getAccessControl() != D2->getAccessControl()) in IsStructurallyEquivalent()
2122 cast<FieldDecl>(D2), Owner2Type); in IsStructurallyEquivalent()
2126 ObjCIvarDecl *D1, ObjCIvarDecl *D2) { in IsStructurallyEquivalent() argument
2128 Context.ToCtx.getObjCInterfaceType(D2->getContainingInterface()); in IsStructurallyEquivalent()
2129 return IsStructurallyEquivalent(Context, D1, D2, Owner2Type); in IsStructurallyEquivalent()
2180 ObjCCategoryDecl *D2) { in IsStructurallyEquivalent() argument
2181 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
2185 *Intf2 = D2->getClassInterface(); in IsStructurallyEquivalent()
2194 ObjCCategoryDecl::protocol_iterator Protocol2 = D2->protocol_begin(), in IsStructurallyEquivalent()
2195 Protocol2End = D2->protocol_end(); in IsStructurallyEquivalent()
2211 ObjCCategoryDecl::ivar_iterator Ivar2 = D2->ivar_begin(), in IsStructurallyEquivalent()
2212 Ivar2End = D2->ivar_end(); in IsStructurallyEquivalent()
2225 ObjCCategoryDecl::method_iterator Method2 = D2->meth_begin(), in IsStructurallyEquivalent()
2226 Method2End = D2->meth_end(); in IsStructurallyEquivalent()
2243 Decl *D1, Decl *D2) { in IsStructurallyEquivalent() argument
2247 D2 = D2->getCanonicalDecl(); in IsStructurallyEquivalent()
2248 std::pair<Decl *, Decl *> P{D1, D2}; in IsStructurallyEquivalent()
2374 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) { in IsEquivalent() argument
2387 if (!::IsStructurallyEquivalent(*this, D1, D2)) in IsEquivalent()
2411 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) { in CheckCommonEquivalence() argument
2414 TemplateDecl *Template2 = D2->getDescribedTemplate(); in CheckCommonEquivalence()
2426 Decl *D1, Decl *D2) { in CheckKindSpecificEquivalence() argument
2429 if (D1->getKind() != D2->getKind()) in CheckKindSpecificEquivalence()
2439 static_cast<DERIVED##Decl *>(D2)); in CheckKindSpecificEquivalence()
2452 Decl *D2 = P.second; in Finish() local
2455 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2); in Finish()