Lines Matching refs:D2
100 Decl *D1, Decl *D2);
828 RecordDecl *D2 = Field2->getType()->castAs<RecordType>()->getDecl(); in IsStructurallyEquivalent() local
829 return IsStructurallyEquivalent(Context, D1, D2); in IsStructurallyEquivalent()
966 RecordDecl *D1, RecordDecl *D2) { in IsStructurallyEquivalent() argument
967 if (D1->isUnion() != D2->isUnion()) { in IsStructurallyEquivalent()
969 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
973 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
980 if (!D1->getDeclName() && !D2->getDeclName()) { in IsStructurallyEquivalent()
987 D2)) { in IsStructurallyEquivalent()
997 const auto *Spec2 = dyn_cast<ClassTemplateSpecializationDecl>(D2); in IsStructurallyEquivalent()
1022 D2 = D2->getDefinition(); in IsStructurallyEquivalent()
1023 if (!D1 || !D2) in IsStructurallyEquivalent()
1032 if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage()) in IsStructurallyEquivalent()
1037 if (D1->isBeingDefined() || D2->isBeingDefined()) in IsStructurallyEquivalent()
1041 if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) { in IsStructurallyEquivalent()
1049 Context.Diag2(D2->getLocation(), diag::warn_odr_tag_type_inconsistent) in IsStructurallyEquivalent()
1050 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1051 Context.Diag2(D2->getLocation(), diag::note_odr_number_of_bases) in IsStructurallyEquivalent()
1067 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1069 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1081 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1083 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1101 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1105 Context.Diag2(D2->getLocation(), diag::note_odr_missing_friend); in IsStructurallyEquivalent()
1112 Context.Diag2(D2->getLocation(), diag::warn_odr_tag_type_inconsistent) in IsStructurallyEquivalent()
1123 Context.Diag2(D2->getLocation(), diag::warn_odr_tag_type_inconsistent) in IsStructurallyEquivalent()
1124 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1132 Context.Diag2(D2->getLocation(), diag::warn_odr_tag_type_inconsistent) in IsStructurallyEquivalent()
1133 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1137 Context.Diag2(D2->getLocation(), diag::note_odr_missing_base); in IsStructurallyEquivalent()
1144 RecordDecl::field_iterator Field2 = D2->field_begin(), in IsStructurallyEquivalent()
1145 Field2End = D2->field_end(); in IsStructurallyEquivalent()
1151 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1155 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1158 Context.Diag2(D2->getLocation(), diag::note_odr_missing_field); in IsStructurallyEquivalent()
1169 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1173 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1186 EnumDecl *D1, EnumDecl *D2) { in IsStructurallyEquivalent() argument
1191 D2 = D2->getDefinition(); in IsStructurallyEquivalent()
1192 if (!D1 || !D2) in IsStructurallyEquivalent()
1195 EnumDecl::enumerator_iterator EC2 = D2->enumerator_begin(), in IsStructurallyEquivalent()
1196 EC2End = D2->enumerator_end(); in IsStructurallyEquivalent()
1202 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1206 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1209 Context.Diag2(D2->getLocation(), diag::note_odr_missing_enumerator); in IsStructurallyEquivalent()
1219 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1223 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1235 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1239 << Context.ToCtx.getTypeDeclType(D2); in IsStructurallyEquivalent()
1285 TemplateTypeParmDecl *D2) { in IsStructurallyEquivalent() argument
1286 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1288 Context.Diag2(D2->getLocation(), diag::err_odr_parameter_pack_non_pack) in IsStructurallyEquivalent()
1289 << D2->isParameterPack(); in IsStructurallyEquivalent()
1301 NonTypeTemplateParmDecl *D2) { in IsStructurallyEquivalent() argument
1302 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1304 Context.Diag2(D2->getLocation(), diag::err_odr_parameter_pack_non_pack) in IsStructurallyEquivalent()
1305 << D2->isParameterPack(); in IsStructurallyEquivalent()
1313 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) { in IsStructurallyEquivalent()
1315 Context.Diag2(D2->getLocation(), in IsStructurallyEquivalent()
1317 << D2->getType() << D1->getType(); in IsStructurallyEquivalent()
1329 TemplateTemplateParmDecl *D2) { in IsStructurallyEquivalent() argument
1330 if (D1->isParameterPack() != D2->isParameterPack()) { in IsStructurallyEquivalent()
1332 Context.Diag2(D2->getLocation(), diag::err_odr_parameter_pack_non_pack) in IsStructurallyEquivalent()
1333 << D2->isParameterPack(); in IsStructurallyEquivalent()
1342 D2->getTemplateParameters()); in IsStructurallyEquivalent()
1346 StructuralEquivalenceContext &Ctx, TemplateDecl *D1, TemplateDecl *D2) { in IsTemplateDeclCommonStructurallyEquivalent() argument
1347 if (!IsStructurallyEquivalent(D1->getIdentifier(), D2->getIdentifier())) in IsTemplateDeclCommonStructurallyEquivalent()
1350 if (D1->getNameAsString() != D2->getNameAsString()) in IsTemplateDeclCommonStructurallyEquivalent()
1353 D2->getTemplateParameters()); in IsTemplateDeclCommonStructurallyEquivalent()
1358 ClassTemplateDecl *D2) { in IsStructurallyEquivalent() argument
1360 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1365 D2->getTemplatedDecl()); in IsStructurallyEquivalent()
1370 FunctionTemplateDecl *D2) { in IsStructurallyEquivalent() argument
1372 if (!IsTemplateDeclCommonStructurallyEquivalent(Context, D1, D2)) in IsStructurallyEquivalent()
1377 D2->getTemplatedDecl()->getType()); in IsStructurallyEquivalent()
1381 FriendDecl *D1, FriendDecl *D2) { in IsStructurallyEquivalent() argument
1382 if ((D1->getFriendType() && D2->getFriendDecl()) || in IsStructurallyEquivalent()
1383 (D1->getFriendDecl() && D2->getFriendType())) { in IsStructurallyEquivalent()
1386 if (D1->getFriendType() && D2->getFriendType()) in IsStructurallyEquivalent()
1389 D2->getFriendType()->getType()); in IsStructurallyEquivalent()
1390 if (D1->getFriendDecl() && D2->getFriendDecl()) in IsStructurallyEquivalent()
1392 D2->getFriendDecl()); in IsStructurallyEquivalent()
1397 FunctionDecl *D1, FunctionDecl *D2) { in IsStructurallyEquivalent() argument
1399 if (!IsStructurallyEquivalent(Context, D1->getType(), D2->getType())) in IsStructurallyEquivalent()
1407 Decl *D1, Decl *D2) { in IsStructurallyEquivalent() argument
1413 std::make_pair(D1->getCanonicalDecl(), D2->getCanonicalDecl()))) in IsStructurallyEquivalent()
1419 return EquivToD1 == D2->getCanonicalDecl(); in IsStructurallyEquivalent()
1422 EquivToD1 = D2->getCanonicalDecl(); in IsStructurallyEquivalent()
1488 bool StructuralEquivalenceContext::IsEquivalent(Decl *D1, Decl *D2) { in IsEquivalent() argument
1499 if (!::IsStructurallyEquivalent(*this, D1, D2)) in IsEquivalent()
1514 bool StructuralEquivalenceContext::CheckCommonEquivalence(Decl *D1, Decl *D2) { in CheckCommonEquivalence() argument
1517 TemplateDecl *Template2 = D2->getDescribedTemplate(); in CheckCommonEquivalence()
1529 Decl *D1, Decl *D2) { in CheckKindSpecificEquivalence() argument
1533 if (auto *Record2 = dyn_cast<RecordDecl>(D2)) { in CheckKindSpecificEquivalence()
1549 if (auto *Enum2 = dyn_cast<EnumDecl>(D2)) { in CheckKindSpecificEquivalence()
1565 if (const auto *Typedef2 = dyn_cast<TypedefNameDecl>(D2)) { in CheckKindSpecificEquivalence()
1576 if (auto *ClassTemplate2 = dyn_cast<ClassTemplateDecl>(D2)) { in CheckKindSpecificEquivalence()
1585 if (auto *FunctionTemplate2 = dyn_cast<FunctionTemplateDecl>(D2)) { in CheckKindSpecificEquivalence()
1594 if (auto *TTP2 = dyn_cast<TemplateTypeParmDecl>(D2)) { in CheckKindSpecificEquivalence()
1602 if (auto *NTTP2 = dyn_cast<NonTypeTemplateParmDecl>(D2)) { in CheckKindSpecificEquivalence()
1610 if (auto *TTP2 = dyn_cast<TemplateTemplateParmDecl>(D2)) { in CheckKindSpecificEquivalence()
1618 if (auto *MD2 = dyn_cast<CXXMethodDecl>(D2)) { in CheckKindSpecificEquivalence()
1626 if (FunctionDecl *FD2 = dyn_cast<FunctionDecl>(D2)) { in CheckKindSpecificEquivalence()
1637 if (FriendDecl *FrD2 = dyn_cast<FriendDecl>(D2)) { in CheckKindSpecificEquivalence()
1655 Decl *D2 = TentativeEquivalences[D1]; in Finish() local
1656 assert(D2 && "Unrecorded tentative equivalence?"); in Finish()
1659 CheckCommonEquivalence(D1, D2) && CheckKindSpecificEquivalence(D1, D2); in Finish()
1665 std::make_pair(D1->getCanonicalDecl(), D2->getCanonicalDecl())); in Finish()