Lines Matching refs:D2
100 Decl *D1, Decl *D2);
1304 RecordDecl *D2 = Field2->getType()->castAs<RecordType>()->getDecl(); in IsStructurallyEquivalent() local
1305 return IsStructurallyEquivalent(Context, D1, D2); in IsStructurallyEquivalent()
1410 CXXRecordDecl *D1, CXXRecordDecl *D2) { in IsStructurallyEquivalentLambdas() argument
1411 assert(D1->isLambda() && D2->isLambda() && in IsStructurallyEquivalentLambdas()
1414 D2->getLambdaCallOperator())) in IsStructurallyEquivalentLambdas()
1422 RecordDecl *D2) { in IsRecordContextStructurallyEquivalent() argument
1428 DeclContext *DC2 = D2->getDeclContext()->getNonTransparentContext(); in IsRecordContextStructurallyEquivalent()
1458 RecordDecl *D1, RecordDecl *D2) { in IsStructurallyEquivalent() argument
1464 IdentifierInfo *Name2 = D2->getIdentifier(); in IsStructurallyEquivalent()
1465 if (!Name2 && D2->getTypedefNameForAnonDecl()) in IsStructurallyEquivalent()
1466 Name2 = D2->getTypedefNameForAnonDecl()->getIdentifier(); in IsStructurallyEquivalent()
1470 if (D1->isUnion() != D2->isUnion()) { in IsStructurallyEquivalent()
1472 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic( in IsStructurallyEquivalent()
1474 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1481 if (!D1->getDeclName() && !D2->getDeclName()) { in IsStructurallyEquivalent()
1488 D2)) { in IsStructurallyEquivalent()
1498 if (!IsRecordContextStructurallyEquivalent(D1, D2)) in IsStructurallyEquivalent()
1504 const auto *Spec2 = dyn_cast<ClassTemplateSpecializationDecl>(D2); in IsStructurallyEquivalent()
1529 D2 = D2->getDefinition(); in IsStructurallyEquivalent()
1530 if (!D1 || !D2) in IsStructurallyEquivalent()
1539 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage()) in IsStructurallyEquivalent()
1544 if (D1->isBeingDefined() || D2->isBeingDefined()) in IsStructurallyEquivalent()
1548 if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) { in IsStructurallyEquivalent()
1563 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1566 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1567 Context.Diag2(D2->getLocation(), diag::note_odr_number_of_bases) in IsStructurallyEquivalent()
1583 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1586 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1598 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1601 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1619 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1624 Context.Diag2(D2->getLocation(), diag::note_odr_missing_friend); in IsStructurallyEquivalent()
1631 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1644 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1647 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1655 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1658 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1662 Context.Diag2(D2->getLocation(), diag::note_odr_missing_base); in IsStructurallyEquivalent()
1669 QualType D2Type = Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1670 RecordDecl::field_iterator Field2 = D2->field_begin(), in IsStructurallyEquivalent()
1671 Field2End = D2->field_end(); in IsStructurallyEquivalent()
1677 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1680 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1683 Context.Diag2(D2->getLocation(), diag::note_odr_missing_field); in IsStructurallyEquivalent()
1694 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic( in IsStructurallyEquivalent()
1696 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1709 EnumConstantDecl *D2) { in IsStructurallyEquivalent() argument
1711 const llvm::APSInt &ToVal = D2->getInitVal(); in IsStructurallyEquivalent()
1719 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1724 D2->getInitExpr()); in IsStructurallyEquivalent()
1729 EnumDecl *D1, EnumDecl *D2) { in IsStructurallyEquivalent() argument
1735 IdentifierInfo *Name2 = D2->getIdentifier(); in IsStructurallyEquivalent()
1736 if (!Name2 && D2->getTypedefNameForAnonDecl()) in IsStructurallyEquivalent()
1737 Name2 = D2->getTypedefNameForAnonDecl()->getIdentifier(); in IsStructurallyEquivalent()
1744 D2 = D2->getDefinition(); in IsStructurallyEquivalent()
1745 if (!D1 || !D2) in IsStructurallyEquivalent()
1748 EnumDecl::enumerator_iterator EC2 = D2->enumerator_begin(), in IsStructurallyEquivalent()
1749 EC2End = D2->enumerator_end(); in IsStructurallyEquivalent()
1755 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1758 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1761 Context.Diag2(D2->getLocation(), diag::note_odr_missing_enumerator); in IsStructurallyEquivalent()
1771 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1774 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1786 Context.Diag2(D2->getLocation(), Context.getApplicableDiagnostic( in IsStructurallyEquivalent()
1788 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1836 TemplateTypeParmDecl *D2) { in IsStructurallyEquivalent() argument
1837 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1839 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1842 << D2->isParameterPack(); in IsStructurallyEquivalent()
1854 NonTypeTemplateParmDecl *D2) { in IsStructurallyEquivalent() argument
1855 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1857 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1860 << D2->isParameterPack(); in IsStructurallyEquivalent()
1868 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) { in IsStructurallyEquivalent()
1870 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1873 << D2->getType() << D1->getType(); in IsStructurallyEquivalent()
1885 TemplateTemplateParmDecl *D2) { in IsStructurallyEquivalent() argument
1886 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1888 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1891 << D2->isParameterPack(); in IsStructurallyEquivalent()
1900 D2->getTemplateParameters()); in IsStructurallyEquivalent()
1904 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) { in IsTemplateDeclCommonStructurallyEquivalent() argument
1905 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsTemplateDeclCommonStructurallyEquivalent()
1908 if (D1->getNameAsString() != D2->getNameAsString()) in IsTemplateDeclCommonStructurallyEquivalent()
1911 D2->getTemplateParameters()); in IsTemplateDeclCommonStructurallyEquivalent()
1916 ClassTemplateDecl *D2) { in IsStructurallyEquivalent() argument
1918 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1923 D2->getTemplatedDecl()); in IsStructurallyEquivalent()
1928 FunctionTemplateDecl *D2) { in IsStructurallyEquivalent() argument
1930 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1935 D2->getTemplatedDecl()->getType()); in IsStructurallyEquivalent()
1940 ConceptDecl *D2) { in IsStructurallyEquivalent() argument
1942 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1947 D2->getConstraintExpr()); in IsStructurallyEquivalent()
1951 FriendDecl *D1, FriendDecl *D2) { in IsStructurallyEquivalent() argument
1952 if ((D1->getFriendType() && D2->getFriendDecl()) || in IsStructurallyEquivalent()
1953 (D1->getFriendDecl() && D2->getFriendType())) { in IsStructurallyEquivalent()
1956 if (D1->getFriendType() && D2->getFriendType()) in IsStructurallyEquivalent()
1959 D2->getFriendType()->getType()); in IsStructurallyEquivalent()
1960 if (D1->getFriendDecl() && D2->getFriendDecl()) in IsStructurallyEquivalent()
1962 D2->getFriendDecl()); in IsStructurallyEquivalent()
1967 TypedefNameDecl *D1, TypedefNameDecl *D2) { in IsStructurallyEquivalent() argument
1968 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1972 D2->getUnderlyingType()); in IsStructurallyEquivalent()
1976 FunctionDecl *D1, FunctionDecl *D2) { in IsStructurallyEquivalent() argument
1977 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1981 if (!D2->isOverloadedOperator()) in IsStructurallyEquivalent()
1983 if (D1->getOverloadedOperator() != D2->getOverloadedOperator()) in IsStructurallyEquivalent()
1988 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) in IsStructurallyEquivalent()
1995 ObjCIvarDecl *D1, ObjCIvarDecl *D2, in IsStructurallyEquivalent() argument
1997 if (D1->getAccessControl() != D2->getAccessControl()) in IsStructurallyEquivalent()
2001 cast<FieldDecl>(D2), Owner2Type); in IsStructurallyEquivalent()
2005 ObjCIvarDecl *D1, ObjCIvarDecl *D2) { in IsStructurallyEquivalent() argument
2007 Context.ToCtx.getObjCInterfaceType(D2->getContainingInterface()); in IsStructurallyEquivalent()
2008 return IsStructurallyEquivalent(Context, D1, D2, Owner2Type); in IsStructurallyEquivalent()
2059 ObjCCategoryDecl *D2) { in IsStructurallyEquivalent() argument
2060 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
2064 D2->getClassInterface()->getIdentifier())) in IsStructurallyEquivalent()
2068 ObjCCategoryDecl::protocol_iterator Protocol2 = D2->protocol_begin(), in IsStructurallyEquivalent()
2069 Protocol2End = D2->protocol_end(); in IsStructurallyEquivalent()
2083 QualType D2Type = Context.ToCtx.getObjCInterfaceType(D2->getClassInterface()); in IsStructurallyEquivalent()
2084 ObjCCategoryDecl::ivar_iterator Ivar2 = D2->ivar_begin(), in IsStructurallyEquivalent()
2085 Ivar2End = D2->ivar_end(); in IsStructurallyEquivalent()
2098 ObjCCategoryDecl::method_iterator Method2 = D2->meth_begin(), in IsStructurallyEquivalent()
2099 Method2End = D2->meth_end(); in IsStructurallyEquivalent()
2116 Decl *D1, Decl *D2) { in IsStructurallyEquivalent() argument
2120 D2 = D2->getCanonicalDecl(); in IsStructurallyEquivalent()
2121 std::pair<Decl *, Decl *> P{D1, D2}; in IsStructurallyEquivalent()
2247 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) { in IsEquivalent() argument
2260 if (!::IsStructurallyEquivalent(*this, D1, D2)) in IsEquivalent()
2284 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) { in CheckCommonEquivalence() argument
2287 TemplateDecl *Template2 = D2->getDescribedTemplate(); in CheckCommonEquivalence()
2299 Decl *D1, Decl *D2) { in CheckKindSpecificEquivalence() argument
2302 if (D1->getKind() != D2->getKind()) in CheckKindSpecificEquivalence()
2312 static_cast<DERIVED##Decl *>(D2)); in CheckKindSpecificEquivalence()
2325 Decl *D2 = P.second; in Finish() local
2328 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2); in Finish()