diff options
Diffstat (limited to 'contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp')
| -rw-r--r-- | contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp b/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp index f89f21adff41..4def579e7097 100644 --- a/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp +++ b/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp @@ -125,8 +125,13 @@ OrcMCJITReplacement::runFunction(Function *F, } void OrcMCJITReplacement::runStaticConstructorsDestructors(bool isDtors) { - for (auto &M : LocalModules) - ExecutionEngine::runStaticConstructorsDestructors(*M, isDtors); + auto &CtorDtorsMap = isDtors ? UnexecutedDestructors : UnexecutedConstructors; + + for (auto &KV : CtorDtorsMap) + cantFail(CtorDtorRunner<LazyEmitLayerT>(std::move(KV.second), KV.first) + .runViaLayer(LazyEmitLayer)); + + CtorDtorsMap.clear(); } } // End namespace orc. |
