Lines Matching full:d1
42 // Decl *D1, Decl *D2);
51 // IsStructurallyEquivalent(StructuralEquivalenceContext &Context, Decl *D1,
101 Decl *D1, Decl *D2);
1409 VarDecl *D1, VarDecl *D2) {
1410 IdentifierInfo *Name1 = D1->getIdentifier();
1415 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType()))
1421 if (D1->isThisDeclarationADefinition() != D2->isThisDeclarationADefinition())
1424 if (D1->getStorageClass() != D2->getStorageClass())
1427 return IsStructurallyEquivalent(Context, D1->getInit(), D2->getInit());
1440 RecordDecl *D1 = Field1->getType()->castAs<RecordType>()->getDecl();
1442 return IsStructurallyEquivalent(Context, D1, D2);
1549 CXXRecordDecl *D1, CXXRecordDecl *D2) {
1550 assert(D1->isLambda() && D2->isLambda() &&
1552 if (!IsStructurallyEquivalent(Context, D1->getLambdaCallOperator(),
1562 RecordDecl *D1, RecordDecl *D2) {
1567 DeclContext *DC1 = D1->getDeclContext()->getNonTransparentContext();
1602 static bool NameIsStructurallyEquivalent(const TagDecl &D1, const TagDecl &D2) {
1610 return IsStructurallyEquivalent(GetName(D1), GetName(D2));
1615 RecordDecl *D1, RecordDecl *D2) {
1616 if (!NameIsStructurallyEquivalent(*D1, *D2)) {
1620 if (D1->isUnion() != D2->isUnion()) {
1625 Context.Diag1(D1->getLocation(), diag::note_odr_tag_kind_here)
1626 << D1->getDeclName() << (unsigned)D1->getTagKind();
1631 if (!D1->getDeclName() && !D2->getDeclName()) {
1635 StructuralEquivalenceContext::findUntaggedStructOrUnionIndex(D1)) {
1648 if (!IsRecordContextStructurallyEquivalent(Context, D1, D2))
1653 const auto *Spec1 = dyn_cast<ClassTemplateSpecializationDecl>(D1);
1678 D1 = D1->getDefinition();
1680 if (!D1 || !D2)
1689 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage())
1694 if (D1->isBeingDefined() || D2->isBeingDefined())
1697 if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
1719 Context.Diag1(D1->getLocation(), diag::note_odr_number_of_bases)
1799 Context.Diag1(D1->getLocation(), diag::note_odr_missing_friend);
1822 for (RecordDecl::field_iterator Field1 = D1->field_begin(),
1823 Field1End = D1->field_end();
1849 Context.Diag1(D1->getLocation(), diag::note_odr_missing_field);
1858 EnumConstantDecl *D1,
1860 const llvm::APSInt &FromVal = D1->getInitVal();
1869 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1873 return IsStructurallyEquivalent(Context, D1->getInitExpr(),
1879 EnumDecl *D1, EnumDecl *D2) {
1880 if (!NameIsStructurallyEquivalent(*D1, *D2)) {
1886 D1 = D1->getDefinition();
1888 if (!D1 || !D2)
1893 for (EnumDecl::enumerator_iterator EC1 = D1->enumerator_begin(),
1894 EC1End = D1->enumerator_end();
1934 Context.Diag1(D1->getLocation(), diag::note_odr_missing_enumerator);
1978 TemplateTypeParmDecl *D1,
1980 if (D1->isParameterPack() != D2->isParameterPack()) {
1986 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1987 << D1->isParameterPack();
1996 NonTypeTemplateParmDecl *D1,
1998 if (D1->isParameterPack() != D2->isParameterPack()) {
2004 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
2005 << D1->isParameterPack();
2009 if (!Context.IgnoreTemplateParmDepth && D1->getDepth() != D2->getDepth())
2011 if (D1->getIndex() != D2->getIndex())
2014 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) {
2019 << D2->getType() << D1->getType();
2020 Context.Diag1(D1->getLocation(), diag::note_odr_value_here)
2021 << D1->getType();
2030 TemplateTemplateParmDecl *D1,
2032 if (D1->isParameterPack() != D2->isParameterPack()) {
2038 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
2039 << D1->isParameterPack();
2045 return IsStructurallyEquivalent(Context, D1->getTemplateParameters(),
2050 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) {
2051 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
2053 if (!D1->getIdentifier()) // Special name
2054 if (D1->getNameAsString() != D2->getNameAsString())
2056 return IsStructurallyEquivalent(Ctx, D1->getTemplateParameters(),
2061 ClassTemplateDecl *D1,
2064 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
2068 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl(),
2073 FunctionTemplateDecl *D1,
2076 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
2080 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl()->getType(),
2085 TypeAliasTemplateDecl *D1,
2088 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
2092 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl(),
2097 ConceptDecl *D1,
2100 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
2104 return IsStructurallyEquivalent(Context, D1->getConstraintExpr(),
2109 FriendDecl *D1, FriendDecl *D2) {
2110 if ((D1->getFriendType() && D2->getFriendDecl()) ||
2111 (D1->getFriendDecl() && D2->getFriendType())) {
2114 if (D1->getFriendType() && D2->getFriendType())
2116 D1->getFriendType()->getType(),
2118 if (D1->getFriendDecl() && D2->getFriendDecl())
2119 return IsStructurallyEquivalent(Context, D1->getFriendDecl(),
2125 TypedefNameDecl *D1, TypedefNameDecl *D2) {
2126 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
2129 return IsStructurallyEquivalent(Context, D1->getUnderlyingType(),
2134 FunctionDecl *D1, FunctionDecl *D2) {
2135 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
2138 if (D1->isOverloadedOperator()) {
2141 if (D1->getOverloadedOperator() != D2->getOverloadedOperator())
2146 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType()))
2153 ObjCIvarDecl *D1, ObjCIvarDecl *D2,
2155 if (D1->getAccessControl() != D2->getAccessControl())
2158 return IsStructurallyEquivalent(Context, cast<FieldDecl>(D1),
2163 ObjCIvarDecl *D1, ObjCIvarDecl *D2) {
2166 return IsStructurallyEquivalent(Context, D1, D2, Owner2Type);
2216 ObjCCategoryDecl *D1,
2218 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
2221 const ObjCInterfaceDecl *Intf1 = D1->getClassInterface(),
2233 for (ObjCCategoryDecl::protocol_iterator Protocol1 = D1->protocol_begin(),
2234 Protocol1End = D1->protocol_end();
2250 for (ObjCCategoryDecl::ivar_iterator Ivar1 = D1->ivar_begin(),
2251 Ivar1End = D1->ivar_end();
2264 for (ObjCCategoryDecl::method_iterator Method1 = D1->meth_begin(),
2265 Method1End = D1->meth_end();
2280 Decl *D1, Decl *D2) {
2283 D1 = D1->getCanonicalDecl();
2285 std::pair<Decl *, Decl *> P{D1, D2};
2293 // If yes D1 and D2 will be checked later (from DeclsToCheck),
2411 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) {
2424 if (!::IsStructurallyEquivalent(*this, D1, D2))
2448 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) {
2450 TemplateDecl *Template1 = D1->getDescribedTemplate();
2463 Decl *D1, Decl *D2) {
2466 if (D1->getKind() != D2->getKind())
2471 switch (D1->getKind()) {
2475 return ::IsStructurallyEquivalent(*this, static_cast<DERIVED##Decl *>(D1), \
2488 Decl *D1 = P.first;
2492 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2);