Fairly busy week, with some large improvements on several benchmarks. Several larger rollups landed, in part due to recovery from a temporary CI outage, which has complicated some of the performance monitoring work. These should, however, now be resolved.
Triage done by @simulacrum. Revision range: 69c4aa2901ffadf69deaf91b2f90604bcbc2eb36..9f85cd6f2ab2769c16e89dcdddb3e11d9736b351
2 Regressions, 2 Improvements, 5 Mixed; 2 of them in rollups
31 comparisons made in total
Encode spans relative to the enclosing item #84373
- Large regression in instruction counts (up to 2.1% on
incr-unchanged
builds oftuple-stress
) - Regressions are much smaller on "full" benchmarks (<0.5%). This support has also landed gated behind a -Z flag, so the incremental cost is being paid without the possible wins.
Rollup of 7 pull requests #88881
- Large regression in instruction counts (up to 2.1% on
full
builds ofinflate
) - No clear cause. Investigation is partially ongoing, but may warrant an assignee -- there's several possible candidates.
Rollup of 10 pull requests #88857
- Very large improvement in instruction counts (up to -45.0% on
full
builds ofcoercions
) - Unexpected improvement, though certainly nice to see. Suspected cause is #88147, but this has not been verified.
Use FxHashSet instead of Vec for well formed tys #88771
- Large improvement in instruction counts (up to -2.6% on
full
builds ofexterns
)
Split rustc_mir #80522
- Large improvement in instruction counts (up to -2.0% on
full
builds ofdeeply-nested-async
) - Moderate regression in instruction counts (up to 0.8% on
full
builds ofawait-call-tree
) - Mixed results. Noted in a comment that this also was a slight regression in bootstrap time as measured by perf.rust-lang.org, which seems unfortunate and may merit some investigation.
Rollup of 15 pull requests #88824
- Moderate improvement in instruction counts (up to -0.7% on
incr-patched: println
builds ofhtml5ever
) - Moderate regression in instruction counts (up to 1.0% on
incr-unchanged
builds ofderive
) - Report seems a little bit close to noise, and is definitely mixed. No clear cause, but also a fairly large rollup.
Refactor query forcing #78780
- Moderate improvement in instruction counts (up to -0.9% on
incr-full
builds ofunused-warnings
) - Small regression in instruction counts (up to 1.3% on
incr-patched: println
builds ofcoercions
) - Solid improvement in rustc_query_impl compile times (8%). Overall looks like results are overall more of an improvement than a regression.
Update LLVM submodule #88765
- Moderate improvement in instruction counts (up to -0.7% on
full
builds ofctfe-stress-4
) - Moderate regression in instruction counts (up to 0.7% on
incr-unchanged
builds ofripgrep
) - Fairly mixed results, no clear picture either way.
- #88881 Rollup of 7 pull requests
- #88824 Rollup of 15 pull requests
- #88765 Update LLVM submodule
- #88710 Use index newtyping for TyVid
- #88597 Move global analyses from lowering to resolution
- #88552 Stop allocating vtable entries for non-object-safe methods
- #88533 Concrete regions can show up in mir borrowck if the originated from there
- #88530 Shrink Session a bit
- #88435 Avoid invoking the hir_crate query to traverse the HIR
- #87815 encode
generics_of
for fields and ty params - #87781 Remove box syntax from compiler and tools
- #87688 Introduce
let...else
- #87640 Rollup of 9 pull requests
- #87587 Various refactorings of the TAIT infrastructure
- #87244 Better diagnostics with mismatched types due to implicit static lifetime
- #86898 Add fast path for Path::cmp that skips over long shared prefixes
- #86777 Include terminators in instance size estimate
- #86698 Move OnDiskCache to rustc_query_impl.
- #86588 Rollup of 8 pull requests
- #86034 Change entry point to 🛡️ against 💥 💥-payloads
- #85556 Warn about unreachable code following an expression with an uninhabited type
- #84560 Inline Iterator as IntoIterator.
- #84373 Encode spans relative to the enclosing item
- #83302 Get piece unchecked in
write
- #80522 Split rustc_mir