[llvm] 34531cf - Revert "[llvm-jitlink] Use concurrent linking by default."
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 22 18:30:58 PST 2024
Author: Lang Hames
Date: 2024-12-23T13:30:50+11:00
New Revision: 34531cff638a23f411324d010b3dacc1e9599cfb
URL: https://github.com/llvm/llvm-project/commit/34531cff638a23f411324d010b3dacc1e9599cfb
DIFF: https://github.com/llvm/llvm-project/commit/34531cff638a23f411324d010b3dacc1e9599cfb.diff
LOG: Revert "[llvm-jitlink] Use concurrent linking by default."
This reverts commit edca1d9bad2 while I investigate bot failures,
e.g. https://lab.llvm.org/buildbot/#/builders/137/builds/10791.
Added:
Modified:
llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp
llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp
llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp
llvm/tools/llvm-jitlink/llvm-jitlink.cpp
llvm/tools/llvm-jitlink/llvm-jitlink.h
Removed:
################################################################################
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp
index 6db78926101fde..5271fdb5565904 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp
@@ -66,8 +66,6 @@ static Expected<Symbol &> getCOFFStubTarget(LinkGraph &G, Block &B) {
namespace llvm {
Error registerCOFFGraphInfo(Session &S, LinkGraph &G) {
- std::lock_guard<std::mutex> Lock(S.M);
-
auto FileName = sys::path::filename(G.getName());
if (S.FileInfos.count(FileName)) {
return make_error<StringError>("When -check is passed, file names must be "
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp
index 6aa89413b72309..a8c804a459e3ce 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp
@@ -101,8 +101,6 @@ static Error registerSymbol(LinkGraph &G, Symbol &Sym, Session::FileInfo &FI,
namespace llvm {
Error registerELFGraphInfo(Session &S, LinkGraph &G) {
- std::lock_guard<std::mutex> Lock(S.M);
-
auto FileName = sys::path::filename(G.getName());
if (S.FileInfos.count(FileName)) {
return make_error<StringError>("When -check is passed, file names must be "
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp
index 2fc56c9fcc72ab..2c60c802293a1e 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp
@@ -69,8 +69,6 @@ static Expected<Symbol &> getMachOStubTarget(LinkGraph &G, Block &B) {
namespace llvm {
Error registerMachOGraphInfo(Session &S, LinkGraph &G) {
- std::lock_guard<std::mutex> Lock(S.M);
-
auto FileName = sys::path::filename(G.getName());
if (S.FileInfos.count(FileName)) {
return make_error<StringError>("When -check is passed, file names must be "
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index 205c4aece98fa9..e3ed2b624b06a8 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -91,10 +91,6 @@ static cl::list<std::string> InputFiles(cl::Positional, cl::OneOrMore,
cl::desc("input files"),
cl::cat(JITLinkCategory));
-cl::opt<size_t> MaterializationThreads(
- "threads", cl::desc("Number of materialization threads to use"),
- cl::init(std::numeric_limits<size_t>::max()), cl::cat(JITLinkCategory));
-
static cl::list<std::string>
LibrarySearchPaths("L",
cl::desc("Add dir to the list of library search paths"),
@@ -404,7 +400,6 @@ bool lazyLinkingRequested() {
}
static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
- std::lock_guard<std::mutex> Lock(S.M);
// If this graph is part of the test harness there's nothing to do.
if (S.HarnessFiles.empty() || S.HarnessFiles.count(G.getName()))
@@ -455,11 +450,7 @@ static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
return Error::success();
}
-static void dumpSectionContents(raw_ostream &OS, Session &S, LinkGraph &G) {
- std::lock_guard<std::mutex> Lock(S.M);
-
- outs() << "Relocated section contents for " << G.getName() << ":\n";
-
+static void dumpSectionContents(raw_ostream &OS, LinkGraph &G) {
constexpr orc::ExecutorAddrDiff DumpWidth = 16;
static_assert(isPowerOf2_64(DumpWidth), "DumpWidth must be a power of two");
@@ -851,7 +842,7 @@ static Expected<std::unique_ptr<ExecutorProcessControl>> launchExecutor() {
S.CreateMemoryManager = createSharedMemoryManager;
return SimpleRemoteEPC::Create<FDSimpleRemoteEPCTransport>(
- std::make_unique<DynamicThreadPoolTaskDispatcher>(MaterializationThreads),
+ std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt),
std::move(S), FromExecutor[ReadEnd], ToExecutor[WriteEnd]);
#endif
}
@@ -993,16 +984,10 @@ Expected<std::unique_ptr<Session>> Session::Create(Triple TT,
auto PageSize = sys::Process::getPageSize();
if (!PageSize)
return PageSize.takeError();
- std::unique_ptr<TaskDispatcher> Dispatcher;
- if (MaterializationThreads == 0)
- Dispatcher = std::make_unique<InPlaceTaskDispatcher>();
- else
- Dispatcher = std::make_unique<DynamicThreadPoolTaskDispatcher>(
- MaterializationThreads);
-
EPC = std::make_unique<SelfExecutorProcessControl>(
- std::make_shared<SymbolStringPool>(), std::move(Dispatcher),
- std::move(TT), *PageSize, createInProcessMemoryManager());
+ std::make_shared<SymbolStringPool>(),
+ std::make_unique<InPlaceTaskDispatcher>(), std::move(TT), *PageSize,
+ createInProcessMemoryManager());
}
Error Err = Error::success();
@@ -1236,7 +1221,6 @@ void Session::modifyPassConfig(LinkGraph &G, PassConfiguration &PassConfig) {
if (ShowGraphsRegex)
PassConfig.PostFixupPasses.push_back([this](LinkGraph &G) -> Error {
- std::lock_guard<std::mutex> Lock(M);
// Print graph if ShowLinkGraphs is specified-but-empty, or if
// it contains the given graph.
if (ShowGraphsRegex->match(G.getName())) {
@@ -1250,8 +1234,9 @@ void Session::modifyPassConfig(LinkGraph &G, PassConfiguration &PassConfig) {
[this](LinkGraph &G) { return applyHarnessPromotions(*this, G); });
if (ShowRelocatedSectionContents)
- PassConfig.PostFixupPasses.push_back([this](LinkGraph &G) -> Error {
- dumpSectionContents(outs(), *this, G);
+ PassConfig.PostFixupPasses.push_back([](LinkGraph &G) -> Error {
+ outs() << "Relocated section contents for " << G.getName() << ":\n";
+ dumpSectionContents(outs(), G);
return Error::success();
});
@@ -1616,31 +1601,6 @@ static Error sanitizeArguments(const Triple &TT, const char *ArgV0) {
}
}
- if (MaterializationThreads == std::numeric_limits<size_t>::max()) {
- if (auto HC = std::thread::hardware_concurrency())
- MaterializationThreads = HC;
- else {
- errs() << "Warning: std::thread::hardware_concurrency() returned 0, "
- "defaulting to -threads=1.\n";
- MaterializationThreads = 1;
- }
- }
-
- if (!!OutOfProcessExecutor.getNumOccurrences() ||
- !!OutOfProcessExecutorConnect.getNumOccurrences()) {
- if (NoExec)
- return make_error<StringError>("-noexec cannot be used with " +
- OutOfProcessExecutor.ArgStr + " or " +
- OutOfProcessExecutorConnect.ArgStr,
- inconvertibleErrorCode());
-
- if (MaterializationThreads == 0)
- return make_error<StringError>("-threads=0 cannot be used with " +
- OutOfProcessExecutor.ArgStr + " or " +
- OutOfProcessExecutorConnect.ArgStr,
- inconvertibleErrorCode());
- }
-
// Only one of -oop-executor and -oop-executor-connect can be used.
if (!!OutOfProcessExecutor.getNumOccurrences() &&
!!OutOfProcessExecutorConnect.getNumOccurrences())
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.h b/llvm/tools/llvm-jitlink/llvm-jitlink.h
index 6ddbf37ea0f558..bfad5211c21766 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.h
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.h
@@ -110,7 +110,6 @@ struct Session {
DynLibJDMap DynLibJDs;
- std::mutex M;
SymbolInfoMap SymbolInfos;
FileInfoMap FileInfos;
More information about the llvm-commits
mailing list