Lines Matching defs:D1

229     bool IsStructurallyEquivalent(Decl *D1, Decl *D2);
262 Decl *D1, Decl *D2);
852 RecordDecl *D1 = Field1->getType()->castAs<RecordType>()->getDecl();
854 return IsStructurallyEquivalent(Context, D1, D2);
952 RecordDecl *D1, RecordDecl *D2) {
953 if (D1->isUnion() != D2->isUnion()) {
957 Context.Diag1(D1->getLocation(), diag::note_odr_tag_kind_here)
958 << D1->getDeclName() << (unsigned)D1->getTagKind();
963 if (D1->isAnonymousStructOrUnion() && D2->isAnonymousStructOrUnion()) {
966 if (Optional<unsigned> Index1 = findAnonymousStructOrUnionIndex(D1)) {
977 = dyn_cast<ClassTemplateSpecializationDecl>(D1);
1003 D1 = D1->getDefinition();
1005 if (!D1 || !D2)
1008 if (CXXRecordDecl *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
1016 Context.Diag1(D1->getLocation(), diag::note_odr_number_of_bases)
1075 for (RecordDecl::field_iterator Field1 = D1->field_begin(),
1076 Field1End = D1->field_end();
1100 Context.Diag1(D1->getLocation(), diag::note_odr_missing_field);
1110 EnumDecl *D1, EnumDecl *D2) {
1113 for (EnumDecl::enumerator_iterator EC1 = D1->enumerator_begin(),
1114 EC1End = D1->enumerator_end();
1153 Context.Diag1(D1->getLocation(), diag::note_odr_missing_enumerator);
1197 TemplateTypeParmDecl *D1,
1199 if (D1->isParameterPack() != D2->isParameterPack()) {
1203 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1204 << D1->isParameterPack();
1213 NonTypeTemplateParmDecl *D1,
1215 if (D1->isParameterPack() != D2->isParameterPack()) {
1219 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1220 << D1->isParameterPack();
1226 if (!Context.IsStructurallyEquivalent(D1->getType(), D2->getType())) {
1230 << D2->getType() << D1->getType();
1231 Context.Diag1(D1->getLocation(), diag::note_odr_value_here)
1232 << D1->getType();
1241 TemplateTemplateParmDecl *D1,
1243 if (D1->isParameterPack() != D2->isParameterPack()) {
1247 Context.Diag1(D1->getLocation(), diag::note_odr_parameter_pack_non_pack)
1248 << D1->isParameterPack();
1254 return IsStructurallyEquivalent(Context, D1->getTemplateParameters(),
1259 ClassTemplateDecl *D1,
1263 D1->getTemplateParameters(),
1268 return Context.IsStructurallyEquivalent(D1->getTemplatedDecl(),
1274 Decl *D1, Decl *D2) {
1279 if (Context.NonEquivalentDecls.count(std::make_pair(D1->getCanonicalDecl(),
1283 // Determine whether we've already produced a tentative equivalence for D1.
1284 Decl *&EquivToD1 = Context.TentativeEquivalences[D1->getCanonicalDecl()];
1288 // Produce a tentative equivalence D1 <-> D2, which will be checked later.
1290 Context.DeclsToCheck.push_back(D1->getCanonicalDecl());
1294 bool StructuralEquivalenceContext::IsStructurallyEquivalent(Decl *D1,
1296 if (!::IsStructurallyEquivalent(*this, D1, D2))
1313 Decl *D1 = DeclsToCheck.front();
1316 Decl *D2 = TentativeEquivalences[D1];
1323 if (RecordDecl *Record1 = dyn_cast<RecordDecl>(D1)) {
1339 } else if (EnumDecl *Enum1 = dyn_cast<EnumDecl>(D1)) {
1355 } else if (TypedefNameDecl *Typedef1 = dyn_cast<TypedefNameDecl>(D1)) {
1368 = dyn_cast<ClassTemplateDecl>(D1)) {
1378 } else if (TemplateTypeParmDecl *TTP1= dyn_cast<TemplateTypeParmDecl>(D1)) {
1387 = dyn_cast<NonTypeTemplateParmDecl>(D1)) {
1397 = dyn_cast<TemplateTemplateParmDecl>(D1)) {
1411 NonEquivalentDecls.insert(std::make_pair(D1->getCanonicalDecl(),