A week with a number of correctness-related regressions, and a few small cleanups yielding good performance results. Overall an improvement, particularly for incremental benchmarks.
Triage done by @simulacrum. Revision range: 1ea4851715893ee3f365a8ef09d47165e9a7864f..775e480722c7aba6ff4ff3ccec8c1f4639ae7889
4 Regressions, 2 Improvements, 5 Mixed; 1 of them in rollups 27 comparisons made in total
debuginfo: Make sure that type names for closure and generator environments are unique in debuginfo. #93154
- Average relevant regression: 1.6%
- Largest regression in instruction counts: 2.9% on
incr-full
builds ofdeeply-nested-closures debug
- debuginfo generation made more complicated for correctness reasons; led to a regression. Left a comment asking if this is expected.
rustdoc: Collect traits in scope for foreign inherent impls #93539
- Average relevant regression: 1.1%
- Largest regression in instruction counts: 1.7% on
full
builds ofprojection-caching doc
- Fixes a regression, and necessary for correctness due to rustdoc inlining impls on inherent types across crate boundaries.
Allow unwinding from OOM hooks #92535
- Average relevant regression: 0.8%
- Average relevant improvement: -0.3%
- Largest regression in instruction counts: 1.9% on
incr-patched: println
builds ofregression-31157 opt
- Expected, relatively minimal impact for a desired feature.
Lazy type-alias-impl-trait #92007
- Average relevant regression: 1.2%
- Largest regression in instruction counts: 1.7% on
full
builds ofmatch-stress-enum check
- New errors in wg-grammar
- Errors and regression are being investigated, but were not expected. It is likely that we should get in the habit of pre-running perf on larger PRs like this, which have higher risk of causing problems.
Rollup of 13 pull requests #93738
- Average relevant regression: 0.6%
- Largest regression in instruction counts: 0.8% on
full
builds ofdeeply-nested doc
- Regressions across many documentation benchmarks, though exact cause is unclear (in part due to the rollup). Likely related to #93208, though, which is an expected regression source.
Add more *-unwind ABI variants #93561
- Average relevant regression: 0.5%
- Largest regression in instruction counts: 1.2% on
full
builds ofctfe-stress-4 check
- Regression in enough benchmarks that this seems a genuine regression.
Compress amount of hashed bytes for isize
values in StableHasher #93432
- Average relevant improvement: -1.4%
- Largest improvement in instruction counts: -6.6% on
incr-full
builds ofclap-rs check
- Restoring parts of a previously landed and reverted optimization.
use fold_list
in try_super_fold_with
for SubstsRef
#93643
- Average relevant improvement: -1.1%
- Largest improvement in instruction counts: -2.7% on
full
builds ofkeccak check
Make dead code check a query. #93466
- Average relevant regression: 0.9%
- Average relevant improvement: -0.8%
- Largest improvement in instruction counts: -3.1% on
incr-unchanged
builds ofmatch-stress-enum check
- Largest regression in instruction counts: 1.6% on
incr-patched: dummy fn
builds ofunused-warnings check
- Majority of the improvement limited to incr-unchanged benchmark. Regressions are relatively small and predominantly in stress tests, though also in style-servo incremental patched test cases.
Return an indexmap in all_local_trait_impls
query #93312
- Average relevant regression: 0.6%
- Average relevant improvement: -0.9%
- Largest improvement in instruction counts: -1.1% on
incr-unchanged
builds ofctfe-stress-4 check
- Largest regression in instruction counts: 0.8% on
incr-unchanged
builds ofcranelift-codegen check
- Largely performance-neutral, but change is motivated by (future) correctness around DefId not implementing Ord rather than performance.
Optimize core::str::Chars::count
#90414
- Average relevant regression: 0.4%
- Average relevant improvement: -0.9%
- Largest improvement in instruction counts: -1.4% on
incr-unchanged
builds ofencoding check
- Largest regression in instruction counts: 0.5% on
incr-full
builds ofhtml5ever debug
- Results do not suggest improvements or regressions are directly tied to this PR, so seems likely to be optimizer noise.
Fix invalid special casing of the unreachable! macro #93179
- Average relevant improvement: -1.2%
- Largest improvement in instruction counts: -2.2% on
full
builds ofcranelift-codegen check
- Largest regression in instruction counts: 1.8% on
incr-patched: b9b3e592dd cherry picked
builds ofstyle-servo debug
- Regression appears to be due to codegen unit reshuffling, not directly coupled to the changes in this PR.
Make io::Error use 64 bits on targets with 64 bit pointers. #87869
- Average relevant regression: 3.4%
- Average relevant improvement: -1.1%
- Largest improvement in instruction counts: -4.3% on
full
builds ofpiston-image opt
- Largest regression in instruction counts: 11.2% on
full
builds ofissue-46449 opt
- As noted on the PR thread, likely limited to just one benchmark that is not checking for this performance specifically regardless.
- #93466 Make dead code check a query.
- #93312 Return an indexmap in
all_local_trait_impls
query - #93288 Rollup of 8 pull requests
- #93179 Fix invalid special casing of the unreachable! macro
- #93154 debuginfo: Make sure that type names for closure and generator environments are unique in debuginfo.
- #93138 Rollup of 17 pull requests
- #93095 Store a
Symbol
instead of anIdent
inAssocItem
- #92896 Update some rustc dependencies to deduplicate them
- #92844 Rollup of 9 pull requests
- #92816 Remove deprecated LLVM-style inline assembly
- #92805 partially revertish
lazily "compute" anon const default substs
- #92535 Allow unwinding from OOM hooks
- #92534 Hash
Ident
spans in all HIR structures - #92356 Add {Add,Sub,Mul,Div,Rem,BitXor,BitOr,BitAnd}{,Assign}<$t> to Saturat…
- #92277 rustc_metadata: Stop passing
CrateMetadataRef
by reference (step 1) - #92252 Update pulldown-cmark version to 0.9
- #92229 Do not display
~const Drop
in rustdoc - #92227 Rustdoc: use
is_doc_hidden
method on more places - #92149 Fix bad caching of
~const Drop
bounds - #92135 Add
#[inline]
modifier toTypeId::of
- #92110 Backport LLVM changes to disable deferred inlining
- #92106 Rollup of 4 pull requests
- #92088 intra-doc: Use an enum to represent URL fragments
- #92064 Rollup of 7 pull requests
- #92062 Rollup of 7 pull requests
- #92041 Remove 'speculative evaluation' of predicates
- #92007 Lazy type-alias-impl-trait
- #92003 Rollup of 7 pull requests
- #91996 Rollup of 6 pull requests
- #91959 Rollup of 7 pull requests