r345784 - Revert "[ASTImporter][Structural Eq] Check for isBeingDefined"

Shafik Yaghmour via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 31 14:53:15 PDT 2018


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()), );
 




More information about the cfe-commits mailing list