diff options
author | Fangrui Song <i@maskray.me> | 2021-09-09 09:27:14 -0700 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2021-09-09 09:27:14 -0700 |
commit | 0db402c5b4ef60ca8d20dda8bb59c7288a534e2a (patch) | |
tree | 93e760672d597379d475b037382ebad27e5e0450 /llvm/lib/Support/APFloat.cpp | |
parent | 0782e55c26bf56cd28c26793920fa37883bcf689 (diff) | |
download | llvm-0db402c5b4ef60ca8d20dda8bb59c7288a534e2a.zip llvm-0db402c5b4ef60ca8d20dda8bb59c7288a534e2a.tar.gz llvm-0db402c5b4ef60ca8d20dda8bb59c7288a534e2a.tar.bz2 |
[lld] Buffer writes when composing a single diagnostic
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
Diffstat (limited to 'llvm/lib/Support/APFloat.cpp')
0 files changed, 0 insertions, 0 deletions