[lld] r286004 - Revert r285968: Always use parallel_for_each because it falls back to std::for_each.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 4 11:22:36 PDT 2016


Author: ruiu
Date: Fri Nov  4 13:22:36 2016
New Revision: 286004

URL: http://llvm.org/viewvc/llvm-project?rev=286004&view=rev
Log:
Revert r285968: Always use parallel_for_each because it falls back to std::for_each.

It turned ou that we actually want to call std::for_each even if
threading is supported. Unless --thread is given, LLD shouldn't use
more than one threads.

Modified:
    lld/trunk/ELF/OutputSections.cpp

Modified: lld/trunk/ELF/OutputSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=286004&r1=286003&r2=286004&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.cpp (original)
+++ lld/trunk/ELF/OutputSections.cpp Fri Nov  4 13:22:36 2016
@@ -1064,8 +1064,13 @@ template <class ELFT> void OutputSection
   ArrayRef<uint8_t> Filler = Script<ELFT>::X->getFiller(this->Name);
   if (!Filler.empty())
     fill(Buf, this->getSize(), Filler);
-  parallel_for_each(Sections.begin(), Sections.end(),
-                    [=](InputSection<ELFT> *C) { C->writeTo(Buf); });
+  if (Config->Threads) {
+    parallel_for_each(Sections.begin(), Sections.end(),
+                      [=](InputSection<ELFT> *C) { C->writeTo(Buf); });
+  } else {
+    for (InputSection<ELFT> *C : Sections)
+      C->writeTo(Buf);
+  }
   // Linker scripts may have BYTE()-family commands with which you
   // can write arbitrary bytes to the output. Process them if any.
   Script<ELFT>::X->writeDataBytes(this->Name, Buf);




More information about the llvm-commits mailing list