From 4e3453b47a400a3a53b9ace87c03fb0f414dc733 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Thu, 9 May 2019 22:03:58 +0000 Subject: [PATCH] [ORC] Simplify logic for updating edges when should-discard atoms are pruned. llvm-svn: 360384 --- .../JITLink/JITLinkGeneric.cpp | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp b/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp index 8e4cfa05363..b3477f1ee4c 100644 --- a/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp +++ b/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp @@ -433,28 +433,16 @@ void prune(AtomGraph &G) { // // We replace if all of the following hold: // (1) The atom is marked should-discard, - // (2) it is live, and - // (3) it has edges pointing to it. + // (2) it has live edges (i.e. edges from live atoms) pointing to it. // // Otherwise we simply delete the atom. - bool ReplaceWithExternal = DA->isLive() && DA->shouldDiscard(); - std::vector *EdgesToUpdateForDA = nullptr; - if (ReplaceWithExternal) { - auto ETUItr = EdgesToUpdate.find(DA); - if (ETUItr == EdgesToUpdate.end()) - ReplaceWithExternal = false; - else - EdgesToUpdateForDA = &ETUItr->second; - } G.removeDefinedAtom(*DA); - if (ReplaceWithExternal) { - assert(EdgesToUpdateForDA && - "Replacing atom: There should be edges to update"); - + auto EdgesToUpdateItr = EdgesToUpdate.find(DA); + if (EdgesToUpdateItr != EdgesToUpdate.end()) { auto &ExternalReplacement = G.addExternalAtom(DA->getName()); - for (auto *EdgeToUpdate : *EdgesToUpdateForDA) + for (auto *EdgeToUpdate : EdgesToUpdateItr->second) EdgeToUpdate->setTarget(ExternalReplacement); LLVM_DEBUG(dbgs() << "replaced with " << ExternalReplacement << "\n"); } else