[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