diff options
| author | Lang Hames <lhames@gmail.com> | 2017-09-03 00:50:42 +0000 |
|---|---|---|
| committer | Lang Hames <lhames@gmail.com> | 2017-09-03 00:50:42 +0000 |
| commit | 8a6bab78f68fefaa5fb422bd411c9dfad03ec320 (patch) | |
| tree | 8d622d9b4645a7f0ad2b8edf98ccecf8888248ee /llvm/lib/ExecutionEngine | |
| parent | 1eb03d4277c0938c069b4cf13c47009314c0238b (diff) | |
| download | bcm5719-llvm-8a6bab78f68fefaa5fb422bd411c9dfad03ec320.tar.gz bcm5719-llvm-8a6bab78f68fefaa5fb422bd411c9dfad03ec320.zip | |
[ORC] Add an Error return to the JITCompileCallbackManager::grow method.
Calling grow may result in an error if, for example, this is a callback
manager for a remote target. We need to be able to return this error to the
callee.
llvm-svn: 312429
Diffstat (limited to 'llvm/lib/ExecutionEngine')
| -rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h index e38decf94f3..ecb4c207b5d 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h +++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h @@ -145,12 +145,15 @@ public: createLazyCompileCallback(JITTargetAddress &RetAddr, LLVMOrcLazyCompileCallbackFn Callback, void *CallbackCtx) { - auto CCInfo = CCMgr->getCompileCallback(); - CCInfo.setCompileAction([=]() -> JITTargetAddress { - return Callback(wrap(this), CallbackCtx); - }); - RetAddr = CCInfo.getAddress(); - return LLVMOrcErrSuccess; + if (auto CCInfoOrErr = CCMgr->getCompileCallback()) { + auto &CCInfo = *CCInfoOrErr; + CCInfo.setCompileAction([=]() -> JITTargetAddress { + return Callback(wrap(this), CallbackCtx); + }); + RetAddr = CCInfo.getAddress(); + return LLVMOrcErrSuccess; + } else + return mapError(CCInfoOrErr.takeError()); } LLVMOrcErrorCode createIndirectStub(StringRef StubName, |

