diff options
author | Reid Kleckner <rnk@google.com> | 2018-03-14 21:32:34 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-03-14 21:32:34 +0000 |
commit | c7fd1540b3009e576060b3ed01e59370efd8da0a (patch) | |
tree | 9b4c1e157754d1f6d289bbd298b9dcf82d454a49 /llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp | |
parent | 11f7f9908b139f480c9571c723ddffa3e8e7a08c (diff) | |
download | bcm5719-llvm-c7fd1540b3009e576060b3ed01e59370efd8da0a.tar.gz bcm5719-llvm-c7fd1540b3009e576060b3ed01e59370efd8da0a.zip |
Revert "[ORC] Switch from shared_ptr to unique_ptr for addModule methods."
This reverts commit r327566, it breaks
test/ExecutionEngine/OrcMCJIT/test-global-ctors.ll.
The test doesn't crash with a stack trace, unfortunately. It merely
returns 1 as the exit code.
ASan didn't produce a report, and I reproduced this on my Linux machine
and Windows box.
llvm-svn: 327576
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp b/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp index 29235cd50a8..f945acaf95e 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp @@ -12,6 +12,14 @@ using namespace llvm; +LLVMSharedModuleRef LLVMOrcMakeSharedModule(LLVMModuleRef Mod) { + return wrap(new std::shared_ptr<Module>(unwrap(Mod))); +} + +void LLVMOrcDisposeSharedModuleRef(LLVMSharedModuleRef SharedMod) { + delete unwrap(SharedMod); +} + LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM) { TargetMachine *TM2(unwrap(TM)); @@ -68,25 +76,23 @@ LLVMOrcErrorCode LLVMOrcSetIndirectStubPointer(LLVMOrcJITStackRef JITStack, LLVMOrcErrorCode LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle *RetHandle, - LLVMModuleRef Mod, + LLVMSharedModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void *SymbolResolverCtx) { OrcCBindingsStack &J = *unwrap(JITStack); - std::unique_ptr<Module> M(unwrap(Mod)); - return J.addIRModuleEager(*RetHandle, std::move(M), SymbolResolver, - SymbolResolverCtx); + std::shared_ptr<Module> *M(unwrap(Mod)); + return J.addIRModuleEager(*RetHandle, *M, SymbolResolver, SymbolResolverCtx); } LLVMOrcErrorCode LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle *RetHandle, - LLVMModuleRef Mod, + LLVMSharedModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void *SymbolResolverCtx) { OrcCBindingsStack &J = *unwrap(JITStack); - std::unique_ptr<Module> M(unwrap(Mod)); - return J.addIRModuleLazy(*RetHandle, std::move(M), SymbolResolver, - SymbolResolverCtx); + std::shared_ptr<Module> *M(unwrap(Mod)); + return J.addIRModuleLazy(*RetHandle, *M, SymbolResolver, SymbolResolverCtx); } LLVMOrcErrorCode |