summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-09-21 19:12:36 +0000
committerRui Ueyama <ruiu@google.com>2015-09-21 19:12:36 +0000
commit98a98cffb62b5e90bf11deceb968d2ce1dd7a4b9 (patch)
tree3556a68dd10c8411d7240034528a80b3a041ac9c
parente526de5a47071d4cfb1ce181cc8ec3c575376588 (diff)
downloadbcm5719-llvm-98a98cffb62b5e90bf11deceb968d2ce1dd7a4b9.tar.gz
bcm5719-llvm-98a98cffb62b5e90bf11deceb968d2ce1dd7a4b9.zip
COFF: Do not call std::async with std::launch::async if multithreading is disabled.
llvm-svn: 248193
-rw-r--r--lld/COFF/SymbolTable.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/lld/COFF/SymbolTable.cpp b/lld/COFF/SymbolTable.cpp
index accc8ef33fc..daac487e6c9 100644
--- a/lld/COFF/SymbolTable.cpp
+++ b/lld/COFF/SymbolTable.cpp
@@ -24,15 +24,21 @@ namespace lld {
namespace coff {
void SymbolTable::addFile(std::unique_ptr<InputFile> FileP) {
+#if LLVM_ENABLE_THREADS
+ std::launch Policy = std::launch::async;
+#else
+ std::launch Policy = std::launch::deferred;
+#endif
+
InputFile *File = FileP.get();
Files.push_back(std::move(FileP));
if (auto *F = dyn_cast<ArchiveFile>(File)) {
ArchiveQueue.push_back(
- std::async(std::launch::async, [=]() { F->parse(); return F; }));
+ std::async(Policy, [=]() { F->parse(); return F; }));
return;
}
ObjectQueue.push_back(
- std::async(std::launch::async, [=]() { File->parse(); return File; }));
+ std::async(Policy, [=]() { File->parse(); return File; }));
if (auto *F = dyn_cast<ObjectFile>(File)) {
ObjectFiles.push_back(F);
} else if (auto *F = dyn_cast<BitcodeFile>(File)) {
OpenPOWER on IntegriCloud