summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp b/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
index 8e4cfa05363..b3477f1ee4c 100644
--- a/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
+++ b/llvm/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<Edge *> *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
OpenPOWER on IntegriCloud