Author: shafik Date: Wed Oct 31 14:53:15 2018 New Revision: 345784 URL: http://llvm.org/viewvc/llvm-project?rev=345784&view=rev Log: Revert "[ASTImporter][Structural Eq] Check for isBeingDefined"
This reverts commit r345760 because it caused an assertion in the lldb test suite. This is the log from the build bot: http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/12003/ Modified: cfe/trunk/lib/AST/ASTStructuralEquivalence.cpp cfe/trunk/unittests/AST/ASTImporterTest.cpp Modified: cfe/trunk/lib/AST/ASTStructuralEquivalence.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTStructuralEquivalence.cpp?rev=345784&r1=345783&r2=345784&view=diff ============================================================================== --- cfe/trunk/lib/AST/ASTStructuralEquivalence.cpp (original) +++ cfe/trunk/lib/AST/ASTStructuralEquivalence.cpp Wed Oct 31 14:53:15 2018 @@ -1016,8 +1016,7 @@ static bool IsStructurallyEquivalent(Str return false; // Compare the definitions of these two records. If either or both are - // incomplete (i.e. it is a forward decl), we assume that they are - // equivalent. + // incomplete, we assume that they are equivalent. D1 = D1->getDefinition(); D2 = D2->getDefinition(); if (!D1 || !D2) @@ -1032,11 +1031,6 @@ static bool IsStructurallyEquivalent(Str if (D1->hasExternalLexicalStorage() || D2->hasExternalLexicalStorage()) return true; - // If one definition is currently being defined, we do not compare for - // equality and we assume that the decls are equal. - if (D1->isBeingDefined() || D2->isBeingDefined()) - return true; - if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) { if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) { if (D1CXX->hasExternalLexicalStorage() && Modified: cfe/trunk/unittests/AST/ASTImporterTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/ASTImporterTest.cpp?rev=345784&r1=345783&r2=345784&view=diff ============================================================================== --- cfe/trunk/unittests/AST/ASTImporterTest.cpp (original) +++ cfe/trunk/unittests/AST/ASTImporterTest.cpp Wed Oct 31 14:53:15 2018 @@ -3726,45 +3726,6 @@ TEST_P(ImportFunctionTemplateSpecializat EXPECT_EQ(To1->getPreviousDecl(), To0); } -TEST_P(ASTImporterTestBase, - ImportShouldNotReportFalseODRErrorWhenRecordIsBeingDefined) { - { - Decl *FromTU = getTuDecl( - R"( - template <typename T> - struct B; - )", - Lang_CXX, "input0.cc"); - auto *FromD = FirstDeclMatcher<ClassTemplateDecl>().match( - FromTU, classTemplateDecl(hasName("B"))); - - Import(FromD, Lang_CXX); - } - - { - Decl *FromTU = getTuDecl( - R"( - template <typename T> - struct B { - void f(); - B* b; - }; - )", - Lang_CXX, "input1.cc"); - FunctionDecl *FromD = FirstDeclMatcher<FunctionDecl>().match( - FromTU, functionDecl(hasName("f"))); - Import(FromD, Lang_CXX); - auto *FromCTD = FirstDeclMatcher<ClassTemplateDecl>().match( - FromTU, classTemplateDecl(hasName("B"))); - auto *ToCTD = cast<ClassTemplateDecl>(Import(FromCTD, Lang_CXX)); - EXPECT_TRUE(ToCTD->isThisDeclarationADefinition()); - - // We expect no (ODR) warning during the import. - auto *ToTU = ToAST->getASTContext().getTranslationUnitDecl(); - EXPECT_EQ(0u, ToTU->getASTContext().getDiagnostics().getNumWarnings()); - } -} - INSTANTIATE_TEST_CASE_P(ParameterizedTests, DeclContextTest, ::testing::Values(ArgVector()), ); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits