[ORC] Remove the automagic Main JITDylib fram ExecutionSession.
This patch removes the magic "main" JITDylib from ExecutionEngine. The main
JITDylib was created automatically at ExecutionSession construction time, and
all subsequently created JITDylibs were added to the main JITDylib's
links-against list by default. This saves a couple of lines of boilerplate for
simple JIT setups, but this isn't worth introducing magical behavior for.
ORCv2 clients should now construct their own main JITDylib using
ExecutionSession::createJITDylib and set up its linkages manually using
JITDylib::setSearchOrder (or related methods in JITDylib).
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index 0e0953d..f5b8418 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -397,7 +397,8 @@
}
Session::Session(Triple TT)
- : MemMgr(createMemoryManager()), ObjLayer(ES, *MemMgr), TT(std::move(TT)) {
+ : MainJD(ES.createJITDylib("<main>")), MemMgr(createMemoryManager()),
+ ObjLayer(ES, *MemMgr), TT(std::move(TT)) {
/// Local ObjectLinkingLayer::Plugin class to forward modifyPassConfig to the
/// Session.
@@ -560,7 +561,7 @@
auto FilterMainEntryPoint = [InternedEntryPointName](SymbolStringPtr Name) {
return Name != InternedEntryPointName;
};
- S.ES.getMainJITDylib().addGenerator(
+ S.MainJD.addGenerator(
ExitOnErr(orc::DynamicLibrarySearchGenerator::GetForCurrentProcess(
GlobalPrefix, FilterMainEntryPoint)));
@@ -589,10 +590,9 @@
LLVM_DEBUG(dbgs() << "Creating JITDylibs...\n");
{
// Create a "main" JITLinkDylib.
- auto &MainJD = S.ES.getMainJITDylib();
- IdxToJLD[0] = &MainJD;
- S.JDSearchOrder.push_back(&MainJD);
- LLVM_DEBUG(dbgs() << " 0: " << MainJD.getName() << "\n");
+ IdxToJLD[0] = &S.MainJD;
+ S.JDSearchOrder.push_back(&S.MainJD);
+ LLVM_DEBUG(dbgs() << " 0: " << S.MainJD.getName() << "\n");
// Add any extra JITLinkDylibs from the command line.
std::string JDNamePrefix("lib");