diff options
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, |

