Conversation
|
@bors try @rust-timer queue |
|
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
|
⌛ Trying commit ce064a239e234c6b926107fd9382b9cda7589e83 with merge 450db03509584046c77604194f41a448ac97e1c5... |
|
☀️ Try build successful - checks-actions |
|
Queued 450db03509584046c77604194f41a448ac97e1c5 with parent a28109a, future comparison URL. |
|
Finished benchmarking try commit (450db03509584046c77604194f41a448ac97e1c5): comparison url. Summary: This change led to significant mixed results 🤷 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. Next Steps: If you can justify the regressions found in this perf run, please indicate this with @bors rollup=never |
|
It looks like the large regressions at the start are all slowdowns in run_linker, so this might be related to the missing llvmbc section flag. |
Seems like it. The resulting binaries do get bloated with bitcode. The resulting stripped binary of compiling the with Rust nightly 2021-07-28: with LLVM 13: Just backing out the hack and reverting the LLVM commit to allow the SHF_EXCLUDE flag on .llvmbc again works and makes it better: |
|
Weird issue encountered via the Running |
Unfortunately, it seems like this doesn't actually work: Due to https://reviews.llvm.org/D100944 this no longer modifies the section flags on |
|
The good news is that reverting (just) https://reviews.llvm.org/D100944 does fix the llvmbc issue.
It looks like something is going wrong with Notably, with |
|
@bors try @rust-timer queue |
|
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
|
⌛ Trying commit 5f2b5c7078195e844f3b07fcad2a13172882c68f with merge 0983094463497eec22d550dad25576a894687002... |
|
☀️ Try build successful - checks-actions |
|
Queued 0983094463497eec22d550dad25576a894687002 with parent ef9549b, future comparison URL. |
|
Finished benchmarking try commit (0983094463497eec22d550dad25576a894687002): comparison url. Summary: This change led to significant mixed results 🤷 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. Next Steps: If you can justify the regressions found in this perf run, please indicate this with @bors rollup=never |
|
Still rather stumped on the gold issue and don't really know how to debug it. The best lead I have right now is that there are now some adjacent anon globals in the |
|
|
@tmiasko Ooh, nice find! As suggested in the differential, we might want to switch to |
|
This has reduced by about 20% the number of array bound panics (and other similar panic) in my binaries (despite the final binary size is few percent bigger), this is a significant (good) change, I don't yet know what caused it but I'll try to understand it. |
I also observe 1-3% size increases in final binaries (including wasm); not sure if that is to be expected, or warrants an issue. |
In my opinion this kind of slow little change is better tracked with specialized efforts (like the one for the compiler performance). |
|
Upgrading to LLVM changes the profiling data format incompatibly compared to LLVM 12, breaking my CI/CD code coverage jobs. Thus nightly users doing source-based code coverage measurement LLVM 13's profiling tools. However, LLVM 13 hasn't been released yet, so it looks like people need to use https://github.com/llvm/llvm-project/releases/tag/llvmorg-13.0.0-rc1 for now. |
|
We ship the necessary tools as part of llvm-tools-preview as far as I know, so I believe that should always work. |
Thanks for that pointer! If you are building non-Rust code then you'll also need LLVM-13 compatible tools to use those new tools, e.g. clang-13. |
Work in progress update to LLVM 13. Main changes:
#[used]attribute fromllvm.usedtollvm.compiler.usedto avoid SHF_GNU_RETAIN flag introduced in https://reviews.llvm.org/D97448, which appears to trigger a bug in older versions of gold.LLVM_INCLUDE_TESTS=OFFto avoid Python 3.6 requirement.Upstream issues:
https://bugs.llvm.org/show_bug.cgi?id=51210 (InlineAsm diagnostic reporting for module asm)Fixed by llvm/llvm-project@1558bb8.https://bugs.llvm.org/show_bug.cgi?id=51476 (Miscompile on AArch64 due to incorrect comparison elimination)Fixed by llvm/llvm-project@81b1065.The compile-time impact is mixed, but quite positive as LLVM upgrades go.
The LLVM 13 final release is scheduled for Sep 21st. The current nightly is scheduled for stable release on Oct 21st.
r? @ghost