2022-02-16 Triage Log
Only one outright regression this week. We had some very cool work from cjgillot to prevent queries from doing expensive clones, by just forcing them all to be Copy
! Also, nnethercote's overhaul of interning yielded massive improvements across many crates. Also, a slew of benchmarks were unexpectedly improved quite a lot by some changes to way we invoke the linker when building LLVM itself.
Triage done by @pnkfelix. Revision range: 775e480722c7aba6ff4ff3ccec8c1f4639ae7889..a240ccd81c74c105b6f5fe84c46f8d36edb7e306
2 Regressions, 2 Improvements, 4 Mixed; 0 of them in rollups 47 comparisons made in total
Regressions
Inherit lifetimes for async fn instead of duplicating them. #91403
- Average relevant regression: 1.7%
- Largest regression in instruction counts: 2.0% on
full
builds of issue-88862 check
- This regression was predicted by a rust-timer build when PR was first proposed, ...
- ... but there was no follow-up on those results at that time; left comment on PR.
Apply noundef attribute to &T, &mut T, Box, bool #93670
- Average relevant regression: 0.7%
- Largest regression in instruction counts: 1.1% on
full
builds of regression-31157 debug
- PR author says that Cachegrind indicates this is due to overhead of inserting attribute itself.
- PR author also says there is related work in LLVM 14 that may help ease the performance impact here, so stay tuned for when that lands in PR #93577
Improvements
Ensure that queries only return Copy types. #93511
- Average relevant improvement: -2.3%
- Largest improvement in instruction counts: -6.1% on
incr-unchanged
builds of externs debug
bootstrap: tidy up flag handling for llvm build #93918
- Average relevant improvement: -1.6%
- Largest improvement in instruction counts: -5.4% on
full
builds of helloworld check
Inline a few trivial conversion functions #94021
- Average relevant improvement: -0.5%
- Largest improvement in instruction counts: -1.1% on
full
builds of deeply-nested-async check
Mixed
Revert lazy TAIT PR #93893
- Average relevant regression: 1.0%
- Average relevant improvement: -1.2%
- Largest improvement in instruction counts: -1.8% on
full
builds of deeply-nested-async check
- Largest regression in instruction counts: 1.6% on
full
builds of wg-grammar check
- Left comment: we had to revert the TAIT PR, the fallout from it was too high. Marked as triaged.
Implement tainted_by_errors
in MIR borrowck, use it to skip CTFE #93691
- Average relevant regression: 1.7%
- Average relevant improvement: -0.4%
- Largest improvement in instruction counts: -0.6% on
incr-unchanged
builds of keccak check
- Largest regression in instruction counts: 2.4% on
incr-patched: u8 3072
builds of issue-46449 debug
- There were three experiments done for this PR, with distinct commits: first run, second run, third run.
- The second experiment is what landed; the first experiment had smaller max and average values in its summary, but it regressed far more crates overall, while the second experiment regressed only a few crates, each by slightly more than the first experiment.
- In any case, this was expected fallout from this PR.
make find_similar_impl_candidates
even fuzzier #93298
- Average relevant regression: 0.7%
- Average relevant improvement: -0.3%
- Largest improvement in instruction counts: -0.3% on
full
builds of inflate check
- Largest regression in instruction counts: 0.8% on
full
builds of keccak check
- Not clear why this had a performance impact at all, as it should have only affected error reporting.
Overhaul interning. #93148
- Average relevant regression: 1.0%
- Average relevant improvement: -1.1%
- Largest improvement in instruction counts: -4.5% on
full
builds of projection-caching check
- Largest regression in instruction counts: 1.8% on
full
builds of match-stress-enum check
- This was a massive improvement, full stop.
Untriaged Pull Requests
- #93893 Revert lazy TAIT PR
- #93670 Apply noundef attribute to &T, &mut T, Box, bool
- #93466 Make dead code check a query.
- #93312 Return an indexmap in
all_local_trait_impls
query - #93298 make
find_similar_impl_candidates
even fuzzier - #93288 Rollup of 8 pull requests
- #93154 debuginfo: Make sure that type names for closure and generator environments are unique in debuginfo.
- #93148 Overhaul interning.
- #93138 Rollup of 17 pull requests
- #93095 Store a
Symbol
instead of an Ident
in AssocItem
- #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 to TypeId::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
Nags requiring follow up
TODO: Nags