[llvm] 08c1a6b - Revert "[ORC] Track all dependencies on symbols that aren't Ready yet."

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 1 23:37:55 PST 2024


Author: Lang Hames
Date: 2024-12-02T18:37:48+11:00
New Revision: 08c1a6b3e181c3af019b18489139bfe4b03d9d08

URL: https://github.com/llvm/llvm-project/commit/08c1a6b3e181c3af019b18489139bfe4b03d9d08
DIFF: https://github.com/llvm/llvm-project/commit/08c1a6b3e181c3af019b18489139bfe4b03d9d08.diff

LOG: Revert "[ORC] Track all dependencies on symbols that aren't Ready yet."

This reverts commit 427fb5cc5ac34414c4682c90d3db0c63c5a1b227 while I investigate
the bot failure in https://lab.llvm.org/buildbot/#/builders/95/builds/6835.

Added: 
    

Modified: 
    llvm/lib/ExecutionEngine/Orc/Core.cpp
    llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp
index dc34dfff0166fd..222135bd776885 100644
--- a/llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -938,6 +938,7 @@ Error JITDylib::resolve(MaterializationResponsibility &MR,
           auto &MI = MII->second;
           for (auto &Q : MI.takeQueriesMeeting(SymbolState::Resolved)) {
             Q->notifySymbolMetRequiredState(Name, ResolvedSym);
+            Q->removeQueryDependence(*this, Name);
             if (Q->isComplete())
               CompletedQueries.insert(std::move(Q));
           }
@@ -1206,8 +1207,9 @@ void JITDylib::MaterializingInfo::removeQuery(
       PendingQueries, [&Q](const std::shared_ptr<AsynchronousSymbolQuery> &V) {
         return V.get() == &Q;
       });
-  if (I != PendingQueries.end())
-    PendingQueries.erase(I);
+  assert(I != PendingQueries.end() &&
+         "Query is not attached to this MaterializingInfo");
+  PendingQueries.erase(I);
 }
 
 JITDylib::AsynchronousSymbolQueryList
@@ -2613,12 +2615,6 @@ void ExecutionSession::OL_completeLookup(
               LLVM_DEBUG(dbgs()
                          << "matched, symbol already in required state\n");
               Q->notifySymbolMetRequiredState(Name, SymI->second.getSymbol());
-
-              // If this symbol is in anything other than the Ready state then
-              // we need to track the dependence.
-              if (SymI->second.getState() != SymbolState::Ready)
-                Q->addQueryDependence(JD, Name);
-
               return true;
             }
 
@@ -3169,6 +3165,7 @@ void ExecutionSession::IL_makeEDUEmitted(
       Q->notifySymbolMetRequiredState(SymbolStringPtr(Sym), Entry.getSymbol());
       if (Q->isComplete())
         Queries.insert(Q);
+      Q->removeQueryDependence(JD, SymbolStringPtr(Sym));
     }
   }
 

diff  --git a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
index 8ae05c4ddc59ae..a907dfcf2cec5b 100644
--- a/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
@@ -518,71 +518,6 @@ TEST_F(CoreAPIsStandardTest, TestTrivialCircularDependency) {
     << "Self-dependency prevented symbol from being marked ready";
 }
 
-TEST_F(CoreAPIsStandardTest, TestBasicQueryDependenciesReporting) {
-  // Test that dependencies are reported as expected.
-
-  bool DependenciesCallbackRan = false;
-
-  std::unique_ptr<MaterializationResponsibility> FooR;
-  std::unique_ptr<MaterializationResponsibility> BarR;
-
-  cantFail(JD.define(std::make_unique<SimpleMaterializationUnit>(
-      SymbolFlagsMap({{Foo, FooSym.getFlags()}}),
-      [&](std::unique_ptr<MaterializationResponsibility> R) {
-        FooR = std::move(R);
-      })));
-
-  cantFail(JD.define(std::make_unique<SimpleMaterializationUnit>(
-      SymbolFlagsMap({{Bar, BarSym.getFlags()}}),
-      [&](std::unique_ptr<MaterializationResponsibility> R) {
-        BarR = std::move(R);
-      })));
-
-  cantFail(JD.define(std::make_unique<SimpleMaterializationUnit>(
-      SymbolFlagsMap({{Baz, BazSym.getFlags()}}),
-      [&](std::unique_ptr<MaterializationResponsibility> R) {
-        cantFail(R->notifyResolved({{Baz, BazSym}}));
-        cantFail(R->notifyEmitted({}));
-      })));
-
-  // First issue a lookup for Foo and Bar so that we can put them
-  // into the required states for the test lookup below.
-  ES.lookup(
-      LookupKind::Static, makeJITDylibSearchOrder(&JD),
-      SymbolLookupSet({Foo, Bar}), SymbolState::Resolved,
-      [](Expected<SymbolMap> Result) {
-        EXPECT_THAT_EXPECTED(std::move(Result), Succeeded());
-      },
-      NoDependenciesToRegister);
-
-  cantFail(FooR->notifyResolved({{Foo, FooSym}}));
-  cantFail(FooR->notifyEmitted({}));
-
-  cantFail(BarR->notifyResolved({{Bar, BarSym}}));
-
-  ES.lookup(
-      LookupKind::Static, makeJITDylibSearchOrder(&JD),
-      SymbolLookupSet({Foo, Bar, Baz}), SymbolState::Resolved,
-      [](Expected<SymbolMap> Result) {
-        EXPECT_THAT_EXPECTED(std::move(Result), Succeeded());
-      },
-      [&](const SymbolDependenceMap &Dependencies) {
-        EXPECT_EQ(Dependencies.size(), 1U)
-            << "Expect dependencies on only one JITDylib";
-        EXPECT_TRUE(Dependencies.count(&JD))
-            << "Expect dependencies on JD only";
-        auto &Deps = Dependencies.begin()->second;
-        EXPECT_EQ(Deps.size(), 2U);
-        EXPECT_TRUE(Deps.count(Bar));
-        EXPECT_TRUE(Deps.count(Baz));
-        DependenciesCallbackRan = true;
-      });
-
-  cantFail(BarR->notifyEmitted({}));
-
-  EXPECT_TRUE(DependenciesCallbackRan);
-}
-
 TEST_F(CoreAPIsStandardTest, TestCircularDependenceInOneJITDylib) {
   // Test that a circular symbol dependency between three symbols in a JITDylib
   // does not prevent any symbol from becoming 'ready' once all symbols are


        


More information about the llvm-commits mailing list