diff options
| author | Lang Hames <lhames@gmail.com> | 2019-11-14 15:58:21 -0800 |
|---|---|---|
| committer | Lang Hames <lhames@gmail.com> | 2019-11-14 21:27:19 -0800 |
| commit | 16f38dda292c6e2963e77f722042a9eb5da56d28 (patch) | |
| tree | 412b958c6d721df8ad15a3b014872fc5c8d9292e /llvm/lib/ExecutionEngine/Orc/LLJIT.cpp | |
| parent | bc11830c6a67025186d39fd9de6e49b3b570e2bd (diff) | |
| download | bcm5719-llvm-16f38dda292c6e2963e77f722042a9eb5da56d28.tar.gz bcm5719-llvm-16f38dda292c6e2963e77f722042a9eb5da56d28.zip | |
[ORC] Add a utility to support dumping JIT'd objects to disk for debugging.
Adds a DumpObjects utility that can be used to dump JIT'd objects to disk.
Instances of DebugObjects may be used by ObjectTransformLayer as no-op
transforms.
This patch also adds an ObjectTransformLayer to LLJIT and an example of how
to use this utility to dump JIT'd objects in LLJIT.
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/LLJIT.cpp')
| -rw-r--r-- | llvm/lib/ExecutionEngine/Orc/LLJIT.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp b/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp index a80f78afe80..03f22e0c2a2 100644 --- a/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp +++ b/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp @@ -51,7 +51,7 @@ Error LLJIT::addIRModule(JITDylib &JD, ThreadSafeModule TSM) { Error LLJIT::addObjectFile(JITDylib &JD, std::unique_ptr<MemoryBuffer> Obj) { assert(Obj && "Can not add null object"); - return ObjLinkingLayer->add(JD, std::move(Obj), ES->allocateVModule()); + return ObjTransformLayer.add(JD, std::move(Obj), ES->allocateVModule()); } Expected<JITEvaluatedSymbol> LLJIT::lookupLinkerMangled(JITDylib &JD, @@ -103,13 +103,13 @@ LLJIT::createCompileFunction(LLJITBuilderState &S, LLJIT::LLJIT(LLJITBuilderState &S, Error &Err) : ES(S.ES ? std::move(S.ES) : std::make_unique<ExecutionSession>()), - Main(this->ES->getMainJITDylib()), DL(""), CtorRunner(Main), + Main(this->ES->getMainJITDylib()), DL(""), + ObjLinkingLayer(createObjectLinkingLayer(S, *ES)), + ObjTransformLayer(*this->ES, *ObjLinkingLayer), CtorRunner(Main), DtorRunner(Main) { ErrorAsOutParameter _(&Err); - ObjLinkingLayer = createObjectLinkingLayer(S, *ES); - if (auto DLOrErr = S.JTMB->getDefaultDataLayoutForTarget()) DL = std::move(*DLOrErr); else { @@ -124,7 +124,7 @@ LLJIT::LLJIT(LLJITBuilderState &S, Error &Err) return; } CompileLayer = std::make_unique<IRCompileLayer>( - *ES, *ObjLinkingLayer, std::move(*CompileFunction)); + *ES, ObjTransformLayer, std::move(*CompileFunction)); } if (S.NumCompileThreads > 0) { |

