forked from OSchip/llvm-project
09158252f7
Before this patch, it wasn't possible to extend the ThinLTO threads to all SMT/CMT threads in the system. Only one thread per core was allowed, instructed by usage of llvm::heavyweight_hardware_concurrency() in the ThinLTO code. Any number passed to the LLD flag /opt:lldltojobs=..., or any other ThinLTO-specific flag, was previously interpreted in the context of llvm::heavyweight_hardware_concurrency(), which means SMT disabled. One can now say in LLD: /opt:lldltojobs=0 -- Use one std::thread / hardware core in the system (no SMT). Default value if flag not specified. /opt:lldltojobs=N -- Limit usage to N threads, regardless of usage of heavyweight_hardware_concurrency(). /opt:lldltojobs=all -- Use all hardware threads in the system. Equivalent to /opt:lldltojobs=$(nproc) on Linux and /opt:lldltojobs=%NUMBER_OF_PROCESSORS% on Windows. When an affinity mask is set for the process, threads will be created only for the cores selected by the mask. When N > number-of-hardware-threads-in-the-system, the threads in the thread pool will be dispatched equally on all CPU sockets (tested only on Windows). When N <= number-of-hardware-threads-on-a-CPU-socket, the threads will remain on the CPU socket where the process started (only on Windows). Differential Revision: https://reviews.llvm.org/D75153 |
||
---|---|---|
.. | ||
Inputs | ||
archive.ll | ||
atomics.ll | ||
cache.ll | ||
comdat.ll | ||
diagnostics.ll | ||
export.ll | ||
import-attributes.ll | ||
incompatible.ll | ||
internalize-basic.ll | ||
libcall-archive.ll | ||
libcall-truncsfhf2.ll | ||
lto-start.ll | ||
opt-level.ll | ||
parallel.ll | ||
relocatable-undefined.ll | ||
relocatable.ll | ||
save-temps.ll | ||
signature-mismatch.ll | ||
thinlto.ll | ||
undef.ll | ||
used.ll | ||
verify-invalid.ll | ||
weak-undefined.ll | ||
weak.ll |