diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/tools/lli/OrcLazyJIT.cpp | 8 | ||||
| -rw-r--r-- | llvm/tools/lli/OrcLazyJIT.h | 3 | ||||
| -rw-r--r-- | llvm/tools/lli/lli.cpp | 14 |
3 files changed, 19 insertions, 6 deletions
diff --git a/llvm/tools/lli/OrcLazyJIT.cpp b/llvm/tools/lli/OrcLazyJIT.cpp index 552f5791a10..a36d5731599 100644 --- a/llvm/tools/lli/OrcLazyJIT.cpp +++ b/llvm/tools/lli/OrcLazyJIT.cpp @@ -105,7 +105,8 @@ static PtrTy fromTargetAddress(JITTargetAddress Addr) { return reinterpret_cast<PtrTy>(static_cast<uintptr_t>(Addr)); } -int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) { +int llvm::runOrcLazyJIT(std::vector<std::unique_ptr<Module>> Ms, int ArgC, + char* ArgV[]) { // Add the program's symbols into the JIT's search space. if (sys::DynamicLibrary::LoadLibraryPermanently(nullptr)) { errs() << "Error loading program symbols.\n"; @@ -143,8 +144,9 @@ int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) { OrcInlineStubs); // Add the module, look up main and run it. - auto MainHandle = J.addModule(std::move(M)); - auto MainSym = J.findSymbolIn(MainHandle, "main"); + for (auto &M : Ms) + J.addModule(std::move(M)); + auto MainSym = J.findSymbol("main"); if (!MainSym) { errs() << "Could not find main function.\n"; diff --git a/llvm/tools/lli/OrcLazyJIT.h b/llvm/tools/lli/OrcLazyJIT.h index 72f35ad6ab6..26be63de53e 100644 --- a/llvm/tools/lli/OrcLazyJIT.h +++ b/llvm/tools/lli/OrcLazyJIT.h @@ -156,7 +156,8 @@ private: std::vector<orc::CtorDtorRunner<CODLayerT>> IRStaticDestructorRunners; }; -int runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]); +int runOrcLazyJIT(std::vector<std::unique_ptr<Module>> Ms, int ArgC, + char* ArgV[]); } // end namespace llvm diff --git a/llvm/tools/lli/lli.cpp b/llvm/tools/lli/lli.cpp index be22cc927c2..31979097b93 100644 --- a/llvm/tools/lli/lli.cpp +++ b/llvm/tools/lli/lli.cpp @@ -397,8 +397,18 @@ int main(int argc, char **argv, char * const *envp) { return 1; } - if (UseJITKind == JITKind::OrcLazy) - return runOrcLazyJIT(std::move(Owner), argc, argv); + if (UseJITKind == JITKind::OrcLazy) { + std::vector<std::unique_ptr<Module>> Ms; + Ms.push_back(std::move(Owner)); + for (auto &ExtraMod : ExtraModules) { + Ms.push_back(parseIRFile(ExtraMod, Err, Context)); + if (!Ms.back()) { + Err.print(argv[0], errs()); + return 1; + } + } + return runOrcLazyJIT(std::move(Ms), argc, argv); + } if (EnableCacheManager) { std::string CacheName("file:"); |

