summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-09-03 00:50:42 +0000
committerLang Hames <lhames@gmail.com>2017-09-03 00:50:42 +0000
commit8a6bab78f68fefaa5fb422bd411c9dfad03ec320 (patch)
tree8d622d9b4645a7f0ad2b8edf98ccecf8888248ee /llvm/lib/ExecutionEngine
parent1eb03d4277c0938c069b4cf13c47009314c0238b (diff)
downloadbcm5719-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.h15
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,
OpenPOWER on IntegriCloud