diff options
author | Lang Hames <lhames@gmail.com> | 2018-04-12 18:35:08 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-04-12 18:35:08 +0000 |
commit | 9d8877baf814019e8dd90536c1abf4428c9bce7d (patch) | |
tree | ac2248647c42e4b26b19dc30bc30513a476a4b14 /llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h | |
parent | dec781c141831a348df1f537c8f3907d9351a2c8 (diff) | |
download | bcm5719-llvm-9d8877baf814019e8dd90536c1abf4428c9bce7d.tar.gz bcm5719-llvm-9d8877baf814019e8dd90536c1abf4428c9bce7d.zip |
[ORC] Plumb error notifications through the VSO interface.
This allows materializers to notify the VSO that they were unable to
resolve or finalize symbols.
llvm-svn: 329934
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h index af87df9ac34..73af52055e8 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h +++ b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h @@ -175,25 +175,24 @@ class OrcMCJITReplacement : public ExecutionEngine { for (auto &S : Symbols) { if (auto Sym = M.findMangledSymbol(*S)) { if (auto Addr = Sym.getAddress()) - Query->setDefinition(S, JITEvaluatedSymbol(*Addr, Sym.getFlags())); + Query->resolve(S, JITEvaluatedSymbol(*Addr, Sym.getFlags())); else { - Query->setFailed(Addr.takeError()); + Query->notifyFailed(Addr.takeError()); return SymbolNameSet(); } } else if (auto Err = Sym.takeError()) { - Query->setFailed(std::move(Err)); + Query->notifyFailed(std::move(Err)); return SymbolNameSet(); } else { if (auto Sym2 = M.ClientResolver->findSymbol(*S)) { if (auto Addr = Sym2.getAddress()) - Query->setDefinition(S, - JITEvaluatedSymbol(*Addr, Sym2.getFlags())); + Query->resolve(S, JITEvaluatedSymbol(*Addr, Sym2.getFlags())); else { - Query->setFailed(Addr.takeError()); + Query->notifyFailed(Addr.takeError()); return SymbolNameSet(); } } else if (auto Err = Sym2.takeError()) { - Query->setFailed(std::move(Err)); + Query->notifyFailed(std::move(Err)); return SymbolNameSet(); } else UnresolvedSymbols.insert(S); |