Lines Matching defs:D1

42 //                                      Decl *D1, Decl *D2);
51 // IsStructurallyEquivalent(StructuralEquivalenceContext &Context, Decl *D1,
100 Decl *D1, Decl *D2);
1303 RecordDecl *D1 = Field1->getType()->castAs<RecordType>()->getDecl();
1305 return IsStructurallyEquivalent(Context, D1, D2);
1410 CXXRecordDecl *D1, CXXRecordDecl *D2) {
1411 assert(D1->isLambda() && D2->isLambda() &&
1413 if (!IsStructurallyEquivalent(Context, D1->getLambdaCallOperator(),
1421 static bool IsRecordContextStructurallyEquivalent(RecordDecl *D1,
1427 DeclContext *DC1 = D1->getDeclContext()->getNonTransparentContext();
1458 RecordDecl *D1, RecordDecl *D2) {
1461 IdentifierInfo *Name1 = D1->getIdentifier();
1462 if (!Name1 && D1->getTypedefNameForAnonDecl())
1463 Name1 = D1->getTypedefNameForAnonDecl()->getIdentifier();
1470 if (D1->isUnion() != D2->isUnion()) {
1475 Context.Diag1(D1->getLocation(), diag::note_odr_tag_kind_here)
1476 << D1->getDeclName() << (unsigned)D1->getTagKind();
1481 if (!D1->getDeclName() && !D2->getDeclName()) {
1485 StructuralEquivalenceContext::findUntaggedStructOrUnionIndex(D1)) {
1498 if (!IsRecordContextStructurallyEquivalent(D1, D2))
1503 const auto *Spec1 = dyn_cast<ClassTemplateSpecializationDecl>(D1);
1528 D1 = D1->getDefinition();
1530 if (!D1 || !D2)
1539 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage())
1544 if (D1->isBeingDefined() || D2->isBeingDefined())
1547 if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
1569 Context.Diag1(D1->getLocation(), diag::note_odr_number_of_bases)
1649 Context.Diag1(D1->getLocation(), diag::note_odr_missing_friend);
1672 for (RecordDecl::field_iterator Field1 = D1->field_begin(),
1673 Field1End = D1->field_end();
1699 Context.Diag1(D1->getLocation(), diag::note_odr_missing_field);
1708 EnumConstantDecl *D1,
1710 const llvm::APSInt &FromVal = D1->getInitVal();
1719 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1723 return IsStructurallyEquivalent(Context, D1->getInitExpr(),
1729 EnumDecl *D1, EnumDecl *D2) {
1732 IdentifierInfo *Name1 = D1->getIdentifier();
1733 if (!Name1 && D1->getTypedefNameForAnonDecl())
1734 Name1 = D1->getTypedefNameForAnonDecl()->getIdentifier();
1743 D1 = D1->getDefinition();
1745 if (!D1 || !D2)
1750 for (EnumDecl::enumerator_iterator EC1 = D1->enumerator_begin(),
1751 EC1End = D1->enumerator_end();
1791 Context.Diag1(D1->getLocation(), diag::note_odr_missing_enumerator);
1835 TemplateTypeParmDecl *D1,
1837 if (D1->isParameterPack() != D2->isParameterPack()) {
1843 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1844 << D1->isParameterPack();
1853 NonTypeTemplateParmDecl *D1,
1855 if (D1->isParameterPack() != D2->isParameterPack()) {
1861 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1862 << D1->isParameterPack();
1868 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) {
1873 << D2->getType() << D1->getType();
1874 Context.Diag1(D1->getLocation(), diag::note_odr_value_here)
1875 << D1->getType();
1884 TemplateTemplateParmDecl *D1,
1886 if (D1->isParameterPack() != D2->isParameterPack()) {
1892 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1893 << D1->isParameterPack();
1899 return IsStructurallyEquivalent(Context, D1->getTemplateParameters(),
1904 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) {
1905 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1907 if (!D1->getIdentifier()) // Special name
1908 if (D1->getNameAsString() != D2->getNameAsString())
1910 return IsStructurallyEquivalent(Ctx, D1->getTemplateParameters(),
1915 ClassTemplateDecl *D1,
1918 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1922 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl(),
1927 FunctionTemplateDecl *D1,
1930 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1934 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl()->getType(),
1939 ConceptDecl *D1,
1942 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1946 return IsStructurallyEquivalent(Context, D1->getConstraintExpr(),
1951 FriendDecl *D1, FriendDecl *D2) {
1952 if ((D1->getFriendType() && D2->getFriendDecl()) ||
1953 (D1->getFriendDecl() && D2->getFriendType())) {
1956 if (D1->getFriendType() && D2->getFriendType())
1958 D1->getFriendType()->getType(),
1960 if (D1->getFriendDecl() && D2->getFriendDecl())
1961 return IsStructurallyEquivalent(Context, D1->getFriendDecl(),
1967 TypedefNameDecl *D1, TypedefNameDecl *D2) {
1968 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1971 return IsStructurallyEquivalent(Context, D1->getUnderlyingType(),
1976 FunctionDecl *D1, FunctionDecl *D2) {
1977 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1980 if (D1->isOverloadedOperator()) {
1983 if (D1->getOverloadedOperator() != D2->getOverloadedOperator())
1988 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType()))
1995 ObjCIvarDecl *D1, ObjCIvarDecl *D2,
1997 if (D1->getAccessControl() != D2->getAccessControl())
2000 return IsStructurallyEquivalent(Context, cast<FieldDecl>(D1),
2005 ObjCIvarDecl *D1, ObjCIvarDecl *D2) {
2008 return IsStructurallyEquivalent(Context, D1, D2, Owner2Type);
2058 ObjCCategoryDecl *D1,
2060 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
2063 if (!IsStructurallyEquivalent(D1->getClassInterface()->getIdentifier(),
2070 for (ObjCCategoryDecl::protocol_iterator Protocol1 = D1->protocol_begin(),
2071 Protocol1End = D1->protocol_end();
2086 for (ObjCCategoryDecl::ivar_iterator Ivar1 = D1->ivar_begin(),
2087 Ivar1End = D1->ivar_end();
2100 for (ObjCCategoryDecl::method_iterator Method1 = D1->meth_begin(),
2101 Method1End = D1->meth_end();
2116 Decl *D1, Decl *D2) {
2119 D1 = D1->getCanonicalDecl();
2121 std::pair<Decl *, Decl *> P{D1, D2};
2129 // If yes D1 and D2 will be checked later (from DeclsToCheck),
2247 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) {
2260 if (!::IsStructurallyEquivalent(*this, D1, D2))
2284 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) {
2286 TemplateDecl *Template1 = D1->getDescribedTemplate();
2299 Decl *D1, Decl *D2) {
2302 if (D1->getKind() != D2->getKind())
2307 switch (D1->getKind()) {
2311 return ::IsStructurallyEquivalent(*this, static_cast<DERIVED##Decl *>(D1), \
2324 Decl *D1 = P.first;
2328 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2);