@@ -290,16 +290,13 @@ static void saveThinArchiveToRepro(ArchiveFile const *file) {
290290}
291291
292292struct DeferredFile {
293- #if LLVM_ENABLE_THREADS
294293 StringRef path;
295294 bool isLazy;
296295 MemoryBufferRef buffer;
297- #endif
298296};
299297using DeferredFiles = std::vector<DeferredFile>;
300298
301- #if LLVM_ENABLE_THREADS
302- class SerialBackgroundQueue {
299+ class SerialBackgroundWorkQueue {
303300 std::deque<std::function<void ()>> queue;
304301 std::thread *running;
305302 std::mutex mutex;
@@ -339,7 +336,7 @@ class SerialBackgroundQueue {
339336 }
340337};
341338
342- static SerialBackgroundQueue pageInQueue;
339+ static SerialBackgroundWorkQueue pageInQueue;
343340
344341// Most input files have been mapped but not yet paged in.
345342// This code forces the page-ins on multiple threads so
@@ -376,7 +373,7 @@ void multiThreadedPageInBackground(DeferredFiles &deferred) {
376373#endif
377374 };
378375
379- { // Create scope for waiting for the taskGroup
376+ if ( llvm_is_multithreaded ()) { // Create scope for waiting for the taskGroup
380377 std::atomic_size_t index = 0 ;
381378 llvm::parallel::TaskGroup taskGroup;
382379 for (int w = 0 ; w < config->readWorkers ; w++)
@@ -403,7 +400,6 @@ static void multiThreadedPageIn(const DeferredFiles &deferred) {
403400 multiThreadedPageInBackground (files);
404401 });
405402}
406- #endif
407403
408404static InputFile *processFile (std::optional<MemoryBufferRef> buffer,
409405 DeferredFiles *archiveContents, StringRef path,
@@ -503,10 +499,8 @@ static InputFile *processFile(std::optional<MemoryBufferRef> buffer,
503499 continue ;
504500 }
505501
506- #if LLVM_ENABLE_THREADS
507- if (archiveContents)
502+ if (config->readWorkers && archiveContents)
508503 archiveContents->push_back ({path, isLazy, *mb});
509- #endif
510504 if (!hasObjCSection (*mb))
511505 continue ;
512506 if (Error e = file->fetch (c, " -ObjC" ))
@@ -582,11 +576,9 @@ static void deferFile(StringRef path, bool isLazy, DeferredFiles &deferred) {
582576 std::optional<MemoryBufferRef> buffer = readFile (path);
583577 if (!buffer)
584578 return ;
585- #if LLVM_ENABLE_THREADS
586579 if (config->readWorkers )
587580 deferred.push_back ({path, isLazy, *buffer});
588581 else
589- #endif
590582 processFile (buffer, nullptr , path, LoadType::CommandLine, isLazy);
591583}
592584
@@ -1448,7 +1440,6 @@ static void createFiles(const InputArgList &args) {
14481440 }
14491441 }
14501442
1451- #if LLVM_ENABLE_THREADS
14521443 if (config->readWorkers ) {
14531444 multiThreadedPageIn (deferredFiles);
14541445
@@ -1468,7 +1459,6 @@ static void createFiles(const InputArgList &args) {
14681459
14691460 pageInQueue.stopAllWork = true ;
14701461 }
1471- #endif
14721462}
14731463
14741464static void gatherInputSections () {
@@ -1856,17 +1846,16 @@ bool link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS,
18561846 }
18571847
18581848 if (auto *arg = args.getLastArg (OPT_read_workers)) {
1859- #if LLVM_ENABLE_THREADS
1860- StringRef v (arg->getValue ());
1861- unsigned workers = 0 ;
1862- if (!llvm::to_integer (v, workers, 0 ))
1863- error (arg->getSpelling () +
1864- " : expected a non-negative integer, but got '" + arg->getValue () +
1865- " '" );
1866- config->readWorkers = workers;
1867- #else
1868- error (arg->getSpelling () + " : option unavailable" );
1869- #endif
1849+ if (llvm_is_multithreaded ()) {
1850+ StringRef v (arg->getValue ());
1851+ unsigned workers = 0 ;
1852+ if (!llvm::to_integer (v, workers, 0 ))
1853+ error (arg->getSpelling () +
1854+ " : expected a non-negative integer, but got '" + arg->getValue () +
1855+ " '" );
1856+ config->readWorkers = workers;
1857+ } else
1858+ error (arg->getSpelling () + " : option unavailable" );
18701859 }
18711860 if (auto *arg = args.getLastArg (OPT_threads_eq)) {
18721861 StringRef v (arg->getValue ());
0 commit comments