forked from OSchip/llvm-project
0db402c5b4
llvm::errs() is unbuffered. On a POSIX platform, composing a diagnostic string may invoke the ::write syscall multiple times, which can be slow. Buffer writes to a temporary SmallString when composing a single diagnostic to reduce the number of ::write syscalls to one (also easier to read under strace/truss). For an invocation of ld.lld with 62000+ lines of `ld.lld: warning: symbol ordering file: no such symbol: ` warnings (D87121), the buffering decreases the write time from 1s to 0.4s (for /dev/tty) and from 0.4s to 0.1s (for a tmpfs file). This can speed up `relocation R_X86_64_PC32 out of range` diagnostic printing as well with `--noinhibit-exec --no-fatal-warnings`. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D87272 |
||
---|---|---|
.. | ||
Args.cpp | ||
CMakeLists.txt | ||
DWARF.cpp | ||
ErrorHandler.cpp | ||
Filesystem.cpp | ||
Memory.cpp | ||
Reproduce.cpp | ||
Strings.cpp | ||
TargetOptionsCommandFlags.cpp | ||
Timer.cpp | ||
Version.cpp |