Lines Matching refs:D1
101 Decl *D1, Decl *D2);
1256 RecordDecl *D1 = Field1->getType()->castAs<RecordType>()->getDecl(); in IsStructurallyEquivalent() local
1258 return IsStructurallyEquivalent(Context, D1, D2); in IsStructurallyEquivalent()
1363 CXXRecordDecl *D1, CXXRecordDecl *D2) { in IsStructurallyEquivalentLambdas() argument
1364 assert(D1->isLambda() && D2->isLambda() && in IsStructurallyEquivalentLambdas()
1366 if (!IsStructurallyEquivalent(Context, D1->getLambdaCallOperator(), in IsStructurallyEquivalentLambdas()
1374 static bool IsRecordContextStructurallyEquivalent(RecordDecl *D1, in IsRecordContextStructurallyEquivalent() argument
1380 DeclContext *DC1 = D1->getDeclContext()->getNonTransparentContext(); in IsRecordContextStructurallyEquivalent()
1411 RecordDecl *D1, RecordDecl *D2) { in IsStructurallyEquivalent() argument
1414 IdentifierInfo *Name1 = D1->getIdentifier(); in IsStructurallyEquivalent()
1415 if (!Name1 && D1->getTypedefNameForAnonDecl()) in IsStructurallyEquivalent()
1416 Name1 = D1->getTypedefNameForAnonDecl()->getIdentifier(); in IsStructurallyEquivalent()
1423 if (D1->isUnion() != D2->isUnion()) { in IsStructurallyEquivalent()
1428 Context.Diag1(D1->getLocation(), diag::note_odr_tag_kind_here) in IsStructurallyEquivalent()
1429 << D1->getDeclName() << (unsigned)D1->getTagKind(); in IsStructurallyEquivalent()
1434 if (!D1->getDeclName() && !D2->getDeclName()) { in IsStructurallyEquivalent()
1438 StructuralEquivalenceContext::findUntaggedStructOrUnionIndex(D1)) { in IsStructurallyEquivalent()
1451 if (!IsRecordContextStructurallyEquivalent(D1, D2)) in IsStructurallyEquivalent()
1456 const auto *Spec1 = dyn_cast<ClassTemplateSpecializationDecl>(D1); in IsStructurallyEquivalent()
1481 D1 = D1->getDefinition(); in IsStructurallyEquivalent()
1483 if (!D1 || !D2) in IsStructurallyEquivalent()
1492 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage()) in IsStructurallyEquivalent()
1497 if (D1->isBeingDefined() || D2->isBeingDefined()) in IsStructurallyEquivalent()
1500 if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) { in IsStructurallyEquivalent()
1522 Context.Diag1(D1->getLocation(), diag::note_odr_number_of_bases) in IsStructurallyEquivalent()
1602 Context.Diag1(D1->getLocation(), diag::note_odr_missing_friend); in IsStructurallyEquivalent()
1625 for (RecordDecl::field_iterator Field1 = D1->field_begin(), in IsStructurallyEquivalent()
1626 Field1End = D1->field_end(); in IsStructurallyEquivalent()
1652 Context.Diag1(D1->getLocation(), diag::note_odr_missing_field); in IsStructurallyEquivalent()
1661 EnumConstantDecl *D1, in IsStructurallyEquivalent() argument
1663 const llvm::APSInt &FromVal = D1->getInitVal(); in IsStructurallyEquivalent()
1672 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1676 return IsStructurallyEquivalent(Context, D1->getInitExpr(), in IsStructurallyEquivalent()
1682 EnumDecl *D1, EnumDecl *D2) { in IsStructurallyEquivalent() argument
1685 IdentifierInfo *Name1 = D1->getIdentifier(); in IsStructurallyEquivalent()
1686 if (!Name1 && D1->getTypedefNameForAnonDecl()) in IsStructurallyEquivalent()
1687 Name1 = D1->getTypedefNameForAnonDecl()->getIdentifier(); in IsStructurallyEquivalent()
1696 D1 = D1->getDefinition(); in IsStructurallyEquivalent()
1698 if (!D1 || !D2) in IsStructurallyEquivalent()
1703 for (EnumDecl::enumerator_iterator EC1 = D1->enumerator_begin(), in IsStructurallyEquivalent()
1704 EC1End = D1->enumerator_end(); in IsStructurallyEquivalent()
1744 Context.Diag1(D1->getLocation(), diag::note_odr_missing_enumerator); in IsStructurallyEquivalent()
1788 TemplateTypeParmDecl *D1, in IsStructurallyEquivalent() argument
1790 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1796 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack) in IsStructurallyEquivalent()
1797 << D1->isParameterPack(); in IsStructurallyEquivalent()
1806 NonTypeTemplateParmDecl *D1, in IsStructurallyEquivalent() argument
1808 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1814 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack) in IsStructurallyEquivalent()
1815 << D1->isParameterPack(); in IsStructurallyEquivalent()
1821 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) { in IsStructurallyEquivalent()
1826 << D2->getType() << D1->getType(); in IsStructurallyEquivalent()
1827 Context.Diag1(D1->getLocation(), diag::note_odr_value_here) in IsStructurallyEquivalent()
1828 << D1->getType(); in IsStructurallyEquivalent()
1837 TemplateTemplateParmDecl *D1, in IsStructurallyEquivalent() argument
1839 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1845 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack) in IsStructurallyEquivalent()
1846 << D1->isParameterPack(); in IsStructurallyEquivalent()
1852 return IsStructurallyEquivalent(Context, D1->getTemplateParameters(), in IsStructurallyEquivalent()
1857 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) { in IsTemplateDeclCommonStructurallyEquivalent() argument
1858 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsTemplateDeclCommonStructurallyEquivalent()
1860 if (!D1->getIdentifier()) // Special name in IsTemplateDeclCommonStructurallyEquivalent()
1861 if (D1->getNameAsString() != D2->getNameAsString()) in IsTemplateDeclCommonStructurallyEquivalent()
1863 return IsStructurallyEquivalent(Ctx, D1->getTemplateParameters(), in IsTemplateDeclCommonStructurallyEquivalent()
1868 ClassTemplateDecl *D1, in IsStructurallyEquivalent() argument
1871 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1875 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl(), in IsStructurallyEquivalent()
1880 FunctionTemplateDecl *D1, in IsStructurallyEquivalent() argument
1883 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1887 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl()->getType(), in IsStructurallyEquivalent()
1892 ConceptDecl *D1, in IsStructurallyEquivalent() argument
1895 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1899 return IsStructurallyEquivalent(Context, D1->getConstraintExpr(), in IsStructurallyEquivalent()
1904 FriendDecl *D1, FriendDecl *D2) { in IsStructurallyEquivalent() argument
1905 if ((D1->getFriendType() && D2->getFriendDecl()) || in IsStructurallyEquivalent()
1906 (D1->getFriendDecl() && D2->getFriendType())) { in IsStructurallyEquivalent()
1909 if (D1->getFriendType() && D2->getFriendType()) in IsStructurallyEquivalent()
1911 D1->getFriendType()->getType(), in IsStructurallyEquivalent()
1913 if (D1->getFriendDecl() && D2->getFriendDecl()) in IsStructurallyEquivalent()
1914 return IsStructurallyEquivalent(Context, D1->getFriendDecl(), in IsStructurallyEquivalent()
1920 TypedefNameDecl *D1, TypedefNameDecl *D2) { in IsStructurallyEquivalent() argument
1921 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1924 return IsStructurallyEquivalent(Context, D1->getUnderlyingType(), in IsStructurallyEquivalent()
1929 FunctionDecl *D1, FunctionDecl *D2) { in IsStructurallyEquivalent() argument
1930 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
1933 if (D1->isOverloadedOperator()) { in IsStructurallyEquivalent()
1936 if (D1->getOverloadedOperator() != D2->getOverloadedOperator()) in IsStructurallyEquivalent()
1941 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) in IsStructurallyEquivalent()
1948 ObjCIvarDecl *D1, ObjCIvarDecl *D2, in IsStructurallyEquivalent() argument
1950 if (D1->getAccessControl() != D2->getAccessControl()) in IsStructurallyEquivalent()
1953 return IsStructurallyEquivalent(Context, cast<FieldDecl>(D1), in IsStructurallyEquivalent()
1958 ObjCIvarDecl *D1, ObjCIvarDecl *D2) { in IsStructurallyEquivalent() argument
1961 return IsStructurallyEquivalent(Context, D1, D2, Owner2Type); in IsStructurallyEquivalent()
2011 ObjCCategoryDecl *D1, in IsStructurallyEquivalent() argument
2013 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsStructurallyEquivalent()
2016 if (!IsStructurallyEquivalent(D1->getClassInterface()->getIdentifier(), in IsStructurallyEquivalent()
2023 for (ObjCCategoryDecl::protocol_iterator Protocol1 = D1->protocol_begin(), in IsStructurallyEquivalent()
2024 Protocol1End = D1->protocol_end(); in IsStructurallyEquivalent()
2039 for (ObjCCategoryDecl::ivar_iterator Ivar1 = D1->ivar_begin(), in IsStructurallyEquivalent()
2040 Ivar1End = D1->ivar_end(); in IsStructurallyEquivalent()
2053 for (ObjCCategoryDecl::method_iterator Method1 = D1->meth_begin(), in IsStructurallyEquivalent()
2054 Method1End = D1->meth_end(); in IsStructurallyEquivalent()
2069 Decl *D1, Decl *D2) { in IsStructurallyEquivalent() argument
2072 D1 = D1->getCanonicalDecl(); in IsStructurallyEquivalent()
2074 std::pair<Decl *, Decl *> P{D1, D2}; in IsStructurallyEquivalent()
2200 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) { in IsEquivalent() argument
2213 if (!::IsStructurallyEquivalent(*this, D1, D2)) in IsEquivalent()
2237 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) { in CheckCommonEquivalence() argument
2239 TemplateDecl *Template1 = D1->getDescribedTemplate(); in CheckCommonEquivalence()
2252 Decl *D1, Decl *D2) { in CheckKindSpecificEquivalence() argument
2255 if (D1->getKind() != D2->getKind()) in CheckKindSpecificEquivalence()
2260 switch (D1->getKind()) { in CheckKindSpecificEquivalence()
2264 return ::IsStructurallyEquivalent(*this, static_cast<DERIVED##Decl *>(D1), \ in CheckKindSpecificEquivalence()
2277 Decl *D1 = P.first; in Finish() local
2281 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2); in Finish()