FailedChanges

Summary

  1. [Support] Optimize SHA1 implementation (details)
Commit 43ff63477256d584cf506dba0c222c28231b0ccc by maskray
[Support] Optimize SHA1 implementation
* Add inline to the helper functions because gcc-9 won't inline all of
them without the hint. I've avoided `__attribute__((always_inline))`
because gcc and clang will inline without it, and improves
compatibility.
* Replace the byte-by-byte copy in update() with endian::readbe32()
since perf reports that 1/2 of the time is spent copying into the
buffer before this patch.
When lld uses --build-id=sha1 it spends 30-45% of CPU in SHA1 depending
on the binary (not wall-time since it is parallel). This patch speeds up
SHA1 by a factor of 2 on clang-8 and 3 on gcc-6. This leads to a >10%
improvement in overall linking time.
lld-speed-test benchmarks run on an Intel i9-9900k with Turbo disabled
on CPU 0 compiled with clang-9. Stats recorded with `perf stat -r 5`.
All inputs are using `--build-id=sha1`.
| Input | Before (seconds) | After (seconds) |
| --- | --- | --- |
| chrome | 2.14 | 1.82 (-15%) |
| chrome-icf | 2.56 | 2.29 (-10%) |
| clang | 0.65 | 0.53 (-18%) |
| clang-fsds | 0.69 | 0.58 (-16%) |
| clang-gdb-index | 21.71 | 19.3 (-11%) |
| gold | 0.42 | 0.34 (-19%) |
| gold-fsds | 0.431 | 0.355 (-17%) |
| linux-kernel | 0.625 | 0.575 (-8%) |
| llvm-as | 0.045 | 0.039 (-14%) |
| llvm-as-fsds | 0.035 | 0.039 (-11%) |
| mozilla | 11.3 | 9.8  (-13%) |
| mozilla-gc | 11.84 | 10.36 (-12%) |
| mozilla-O0 | 8.2 | 5.84 (-28%) |
| scylla | 5.59 | 4.52 (-19%) |
Reviewed By: ruiu, MaskRay
Differential Revision: https://reviews.llvm.org/D69295
The file was modifiedllvm/unittests/Support/raw_sha1_ostream_test.cpp (diff)
The file was modifiedllvm/lib/Support/SHA1.cpp (diff)