summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-06-29 20:15:08 +0000
committerReid Kleckner <rnk@google.com>2017-06-29 20:15:08 +0000
commitf03096b3c3175c07ec2417918e32037c9fb08039 (patch)
treeacf2bfbd90523db5923fa5b8faf6a846e5d3fc7c /llvm/lib
parent837c110cb114a105fa0fe186fbb1ba542cc07601 (diff)
downloadbcm5719-llvm-f03096b3c3175c07ec2417918e32037c9fb08039.tar.gz
bcm5719-llvm-f03096b3c3175c07ec2417918e32037c9fb08039.zip
Attempt to fix Orc JIT test timeouts
I think there are some destruction ordering issues here. The ShouldDelete map seems to be getting destroyed before the shared_ptr deleter lambda accesses it. In any case, this avoids inserting elements into the map during shutdown. llvm-svn: 306736
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
index b20690c7caa..690276232a6 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
+++ b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
@@ -193,11 +193,11 @@ public:
}
auto *MPtr = M.release();
ShouldDelete[MPtr] = true;
- auto Deleter =
- [this](Module *Mod) {
- if (ShouldDelete[Mod])
- delete Mod;
- };
+ auto Deleter = [this](Module *Mod) {
+ auto I = ShouldDelete.find(Mod);
+ if (I != ShouldDelete.end() && I->second)
+ delete Mod;
+ };
LocalModules.push_back(std::shared_ptr<Module>(MPtr, std::move(Deleter)));
LazyEmitLayer.addModule(LocalModules.back(), &MemMgr, &Resolver);
}
OpenPOWER on IntegriCloud