Skip to content

Commit 7ec139a

Browse files
committed
Revert "Reapply "[llvm-jitlink] Use concurrent linking by default." with fixes. (llvm#120958)"
Caused random failures. This reverts commit 93d4b1f. (llvmorg-20-init-16299-g93d4b1f7a72f)
1 parent 2c95e60 commit 7ec139a

File tree

4 files changed

+8
-54
lines changed

4 files changed

+8
-54
lines changed

llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ static Expected<Symbol &> getCOFFStubTarget(LinkGraph &G, Block &B) {
6666

6767
namespace llvm {
6868
Error registerCOFFGraphInfo(Session &S, LinkGraph &G) {
69-
std::lock_guard<std::mutex> Lock(S.M);
70-
7169
auto FileName = sys::path::filename(G.getName());
7270
if (S.FileInfos.count(FileName)) {
7371
return make_error<StringError>("When -check is passed, file names must be "

llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,6 @@ static Error registerSymbol(LinkGraph &G, Symbol &Sym, Session::FileInfo &FI,
101101
namespace llvm {
102102

103103
Error registerELFGraphInfo(Session &S, LinkGraph &G) {
104-
std::lock_guard<std::mutex> Lock(S.M);
105-
106104
auto FileName = sys::path::filename(G.getName());
107105
if (S.FileInfos.count(FileName)) {
108106
return make_error<StringError>("When -check is passed, file names must be "

llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ static Expected<Symbol &> getMachOStubTarget(LinkGraph &G, Block &B) {
6969
namespace llvm {
7070

7171
Error registerMachOGraphInfo(Session &S, LinkGraph &G) {
72-
std::lock_guard<std::mutex> Lock(S.M);
73-
7472
auto FileName = sys::path::filename(G.getName());
7573
if (S.FileInfos.count(FileName)) {
7674
return make_error<StringError>("When -check is passed, file names must be "

llvm/tools/llvm-jitlink/llvm-jitlink.cpp

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,6 @@ static cl::list<std::string> InputFiles(cl::Positional, cl::OneOrMore,
9191
cl::desc("input files"),
9292
cl::cat(JITLinkCategory));
9393

94-
static cl::opt<size_t> MaterializationThreads(
95-
"num-threads", cl::desc("Number of materialization threads to use"),
96-
cl::init(std::numeric_limits<size_t>::max()), cl::cat(JITLinkCategory));
97-
9894
static cl::list<std::string>
9995
LibrarySearchPaths("L",
10096
cl::desc("Add dir to the list of library search paths"),
@@ -404,7 +400,6 @@ bool lazyLinkingRequested() {
404400
}
405401

406402
static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
407-
std::lock_guard<std::mutex> Lock(S.M);
408403

409404
// If this graph is part of the test harness there's nothing to do.
410405
if (S.HarnessFiles.empty() || S.HarnessFiles.count(G.getName()))
@@ -455,11 +450,7 @@ static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
455450
return Error::success();
456451
}
457452

458-
static void dumpSectionContents(raw_ostream &OS, Session &S, LinkGraph &G) {
459-
std::lock_guard<std::mutex> Lock(S.M);
460-
461-
outs() << "Relocated section contents for " << G.getName() << ":\n";
462-
453+
static void dumpSectionContents(raw_ostream &OS, LinkGraph &G) {
463454
constexpr orc::ExecutorAddrDiff DumpWidth = 16;
464455
static_assert(isPowerOf2_64(DumpWidth), "DumpWidth must be a power of two");
465456

@@ -851,7 +842,7 @@ static Expected<std::unique_ptr<ExecutorProcessControl>> launchExecutor() {
851842
S.CreateMemoryManager = createSharedMemoryManager;
852843

853844
return SimpleRemoteEPC::Create<FDSimpleRemoteEPCTransport>(
854-
std::make_unique<DynamicThreadPoolTaskDispatcher>(MaterializationThreads),
845+
std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt),
855846
std::move(S), FromExecutor[ReadEnd], ToExecutor[WriteEnd]);
856847
#endif
857848
}
@@ -993,16 +984,10 @@ Expected<std::unique_ptr<Session>> Session::Create(Triple TT,
993984
auto PageSize = sys::Process::getPageSize();
994985
if (!PageSize)
995986
return PageSize.takeError();
996-
std::unique_ptr<TaskDispatcher> Dispatcher;
997-
if (MaterializationThreads == 0)
998-
Dispatcher = std::make_unique<InPlaceTaskDispatcher>();
999-
else
1000-
Dispatcher = std::make_unique<DynamicThreadPoolTaskDispatcher>(
1001-
MaterializationThreads);
1002-
1003987
EPC = std::make_unique<SelfExecutorProcessControl>(
1004-
std::make_shared<SymbolStringPool>(), std::move(Dispatcher),
1005-
std::move(TT), *PageSize, createInProcessMemoryManager());
988+
std::make_shared<SymbolStringPool>(),
989+
std::make_unique<InPlaceTaskDispatcher>(), std::move(TT), *PageSize,
990+
createInProcessMemoryManager());
1006991
}
1007992

1008993
Error Err = Error::success();
@@ -1236,7 +1221,6 @@ void Session::modifyPassConfig(LinkGraph &G, PassConfiguration &PassConfig) {
12361221

12371222
if (ShowGraphsRegex)
12381223
PassConfig.PostFixupPasses.push_back([this](LinkGraph &G) -> Error {
1239-
std::lock_guard<std::mutex> Lock(M);
12401224
// Print graph if ShowLinkGraphs is specified-but-empty, or if
12411225
// it contains the given graph.
12421226
if (ShowGraphsRegex->match(G.getName())) {
@@ -1255,8 +1239,9 @@ void Session::modifyPassConfig(LinkGraph &G, PassConfiguration &PassConfig) {
12551239
[this](LinkGraph &G) { return applyHarnessPromotions(*this, G); });
12561240

12571241
if (ShowRelocatedSectionContents)
1258-
PassConfig.PostFixupPasses.push_back([this](LinkGraph &G) -> Error {
1259-
dumpSectionContents(outs(), *this, G);
1242+
PassConfig.PostFixupPasses.push_back([](LinkGraph &G) -> Error {
1243+
outs() << "Relocated section contents for " << G.getName() << ":\n";
1244+
dumpSectionContents(outs(), G);
12601245
return Error::success();
12611246
});
12621247

@@ -1628,31 +1613,6 @@ static Error sanitizeArguments(const Triple &TT, const char *ArgV0) {
16281613
}
16291614
}
16301615

1631-
if (MaterializationThreads == std::numeric_limits<size_t>::max()) {
1632-
if (auto HC = std::thread::hardware_concurrency())
1633-
MaterializationThreads = HC;
1634-
else {
1635-
errs() << "Warning: std::thread::hardware_concurrency() returned 0, "
1636-
"defaulting to -threads=1.\n";
1637-
MaterializationThreads = 1;
1638-
}
1639-
}
1640-
1641-
if (!!OutOfProcessExecutor.getNumOccurrences() ||
1642-
!!OutOfProcessExecutorConnect.getNumOccurrences()) {
1643-
if (NoExec)
1644-
return make_error<StringError>("-noexec cannot be used with " +
1645-
OutOfProcessExecutor.ArgStr + " or " +
1646-
OutOfProcessExecutorConnect.ArgStr,
1647-
inconvertibleErrorCode());
1648-
1649-
if (MaterializationThreads == 0)
1650-
return make_error<StringError>("-threads=0 cannot be used with " +
1651-
OutOfProcessExecutor.ArgStr + " or " +
1652-
OutOfProcessExecutorConnect.ArgStr,
1653-
inconvertibleErrorCode());
1654-
}
1655-
16561616
// Only one of -oop-executor and -oop-executor-connect can be used.
16571617
if (!!OutOfProcessExecutor.getNumOccurrences() &&
16581618
!!OutOfProcessExecutorConnect.getNumOccurrences())

0 commit comments

Comments
 (0)