Lines Matching refs:D1

43 //                                      Decl *D1, Decl *D2);
52 // IsStructurallyEquivalent(StructuralEquivalenceContext &Context, Decl *D1,
100 Decl *D1, Decl *D2);
973 RecordDecl *D1 = Field1->getType()->castAs<RecordType>()->getDecl();
975 return IsStructurallyEquivalent(Context, D1, D2);
1111 CXXRecordDecl *D1, CXXRecordDecl *D2) {
1112 assert(D1->isLambda() && D2->isLambda() &&
1114 if (!IsStructurallyEquivalent(Context, D1->getLambdaCallOperator(),
1123 RecordDecl *D1, RecordDecl *D2) {
1124 if (D1->isUnion() != D2->isUnion()) {
1129 Context.Diag1(D1->getLocation(), diag::note_odr_tag_kind_here)
1130 << D1->getDeclName() << (unsigned)D1->getTagKind();
1135 if (!D1->getDeclName() && !D2->getDeclName()) {
1139 StructuralEquivalenceContext::findUntaggedStructOrUnionIndex(D1)) {
1151 const auto *Spec1 = dyn_cast<ClassTemplateSpecializationDecl>(D1);
1176 D1 = D1->getDefinition();
1178 if (!D1 || !D2)
1187 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage())
1192 if (D1->isBeingDefined() || D2->isBeingDefined())
1195 if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
1217 Context.Diag1(D1->getLocation(), diag::note_odr_number_of_bases)
1297 Context.Diag1(D1->getLocation(), diag::note_odr_missing_friend);
1319 for (RecordDecl::field_iterator Field1 = D1->field_begin(),
1320 Field1End = D1->field_end();
1346 Context.Diag1(D1->getLocation(), diag::note_odr_missing_field);
1356 EnumDecl *D1, EnumDecl *D2) {
1360 D1 = D1->getDefinition();
1362 if (!D1 || !D2)
1367 for (EnumDecl::enumerator_iterator EC1 = D1->enumerator_begin(),
1368 EC1End = D1->enumerator_end();
1408 Context.Diag1(D1->getLocation(), diag::note_odr_missing_enumerator);
1452 TemplateTypeParmDecl *D1,
1454 if (D1->isParameterPack() != D2->isParameterPack()) {
1460 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1461 << D1->isParameterPack();
1470 NonTypeTemplateParmDecl *D1,
1472 if (D1->isParameterPack() != D2->isParameterPack()) {
1478 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1479 << D1->isParameterPack();
1485 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) {
1490 << D2->getType() << D1->getType();
1491 Context.Diag1(D1->getLocation(), diag::note_odr_value_here)
1492 << D1->getType();
1501 TemplateTemplateParmDecl *D1,
1503 if (D1->isParameterPack() != D2->isParameterPack()) {
1509 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1510 << D1->isParameterPack();
1516 return IsStructurallyEquivalent(Context, D1->getTemplateParameters(),
1521 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) {
1522 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier()))
1524 if (!D1->getIdentifier()) // Special name
1525 if (D1->getNameAsString() != D2->getNameAsString())
1527 return IsStructurallyEquivalent(Ctx, D1->getTemplateParameters(),
1532 ClassTemplateDecl *D1,
1535 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1539 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl(),
1544 FunctionTemplateDecl *D1,
1547 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1551 return IsStructurallyEquivalent(Context, D1->getTemplatedDecl()->getType(),
1556 ConceptDecl *D1,
1559 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2))
1563 return IsStructurallyEquivalent(Context, D1->getConstraintExpr(),
1568 FriendDecl *D1, FriendDecl *D2) {
1569 if ((D1->getFriendType() && D2->getFriendDecl()) ||
1570 (D1->getFriendDecl() && D2->getFriendType())) {
1573 if (D1->getFriendType() && D2->getFriendType())
1575 D1->getFriendType()->getType(),
1577 if (D1->getFriendDecl() && D2->getFriendDecl())
1578 return IsStructurallyEquivalent(Context, D1->getFriendDecl(),
1584 FunctionDecl *D1, FunctionDecl *D2) {
1586 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType()))
1594 Decl *D1, Decl *D2) {
1597 D1 = D1->getCanonicalDecl();
1599 std::pair<Decl *, Decl *> P{D1, D2};
1607 // If yes D1 and D2 will be checked later (from DeclsToCheck),
1725 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) {
1738 if (!::IsStructurallyEquivalent(*this, D1, D2))
1753 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) {
1755 TemplateDecl *Template1 = D1->getDescribedTemplate();
1768 Decl *D1, Decl *D2) {
1771 if (auto *Record1 = dyn_cast<RecordDecl>(D1)) {
1787 } else if (auto *Enum1 = dyn_cast<EnumDecl>(D1)) {
1803 } else if (const auto *Typedef1 = dyn_cast<TypedefNameDecl>(D1)) {
1814 } else if (auto *ClassTemplate1 = dyn_cast<ClassTemplateDecl>(D1)) {
1823 } else if (auto *FunctionTemplate1 = dyn_cast<FunctionTemplateDecl>(D1)) {
1832 } else if (auto *ConceptDecl1 = dyn_cast<ConceptDecl>(D1)) {
1840 } else if (auto *TTP1 = dyn_cast<TemplateTypeParmDecl>(D1)) {
1848 } else if (auto *NTTP1 = dyn_cast<NonTypeTemplateParmDecl>(D1)) {
1856 } else if (auto *TTP1 = dyn_cast<TemplateTemplateParmDecl>(D1)) {
1864 } else if (auto *MD1 = dyn_cast<CXXMethodDecl>(D1)) {
1872 } else if (FunctionDecl *FD1 = dyn_cast<FunctionDecl>(D1)) {
1889 } else if (FriendDecl *FrD1 = dyn_cast<FriendDecl>(D1)) {
1908 Decl *D1 = P.first;
1912 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2);