diff options
| author | Reid Kleckner <rnk@google.com> | 2017-06-29 20:15:08 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2017-06-29 20:15:08 +0000 |
| commit | f03096b3c3175c07ec2417918e32037c9fb08039 (patch) | |
| tree | acf2bfbd90523db5923fa5b8faf6a846e5d3fc7c /llvm/lib | |
| parent | 837c110cb114a105fa0fe186fbb1ba542cc07601 (diff) | |
| download | bcm5719-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.h | 10 |
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); } |

