2022-02-24 Triage Log
A relatively quiet week with improvements largely outweighing regressions. On the regressions side, doc performance has worsened somewhat significantly most likely introduced by adding more docs to blanket impls. On the improvement side, LLVM 14 allowed for an optimization the significantly improves codegen performance.
Triage done by @rylev. Revision range: a240ccd81c74c105b6f5fe84c46f8d36edb7e306..1204400ab8da9830f6f77a5e40e7ad3ea459676a
3 Regressions, 2 Improvements, 7 Mixed; 3 of them in rollups 38 comparisons made in total
Regressions
Rollup of 8 pull requests #94072
- Average relevant regression: 11.3%
- Largest regression in instruction counts: 157.0% on
full
builds of stm32f4 doc
- The regressions are all in doc runs but the largest are quite severe.
- The most likely culprit is #89869 which adds documentation to many different blanket impls.
- Left a comment to investigate.
Rollup of 9 pull requests #94103
- Average relevant regression: 1.1%
- Largest regression in instruction counts: 2.1% on
full
builds of deeply-nested-async check
- Almost all of the regressions are in stress tests so the actual impact on users is likely not that large
- None of the rolled up PRs seem to be suspicious so it's hard to know where to begin
Fix a layout possible miscalculation in alloc::RawVec
#83706
- Average relevant regression: 0.5%
- Largest regression in instruction counts: 1.2% on
incr-unchanged
builds of deeply-nested-async debug
- A small regression would seem likely after this change since more work (e.g., checked multiplication) is being done in RawVec which is used quite a lot. I am, however, unsure whether the actual regression we're seeing here is expected
- Left a comment for investigation.
Improvements
Rollup of 7 pull requests #94254
- Average relevant improvement: -0.8%
- Largest improvement in instruction counts: -0.8% on
incr-unchanged
builds of externs opt
Reapply cg_llvm: fewer_names
in uncached_llvm_type
#94107
- Average relevant improvement: -7.8%
- Largest improvement in instruction counts: -61.2% on
incr-patched: println
builds of webrender-wrench opt
Mixed
Upgrade to LLVM 14 #93577
- Average relevant regression: 0.7%
- Average relevant improvement: -1.3%
- Largest improvement in instruction counts: -3.8% on
full
builds of projection-caching check
- Largest regression in instruction counts: 3.0% on
incr-patched: add static arr item
builds of coercions debug
- Upgrading LLVM is always likely to produce performance changes. Luckily the perf improvements seem to outweigh the perf regressions considerably both in number and magnitude.
Revert #91403 #94088
- Average relevant regression: 1.1%
- Average relevant improvement: -1.5%
- Largest improvement in instruction counts: -1.7% on
full
builds of issue-88862 check
- Largest regression in instruction counts: 1.7% on
incr-unchanged
builds of clap-rs check
- The perf regressions here are relatively minor, and this change fixes a correctness issue, so I think it's fine to let it through.
Guard against unwinding in cleanup code #92911
- Average relevant regression: 0.9%
- Average relevant improvement: -1.6%
- Largest improvement in instruction counts: -3.4% on
incr-full
builds of syn opt
- Largest regression in instruction counts: 3.7% on
full
builds of ripgrep opt
- A relatively large regression considering the change is meant to protect against a rare occurrence (double unwind).
- Left a comment asking for justification.
Allow inlining of ensure_sufficient_stack()
#93934
- Average relevant regression: 0.9%
- Average relevant improvement: -0.8%
- Largest improvement in instruction counts: -1.0% on
incr-patched: add vec item
builds of deep-vector opt
- Largest regression in instruction counts: 0.9% on
incr-unchanged
builds of ctfe-stress-4 check
- This was an attempt at an optimization that proved fruitful before LLVM 14 was merged. Now the regressions and improvements weigh each other out.
safely transmute<&List<Ty<'tcx>>, &List<GenericArg<'tcx>>>
#93505
- Average relevant regression: 1.2%
- Average relevant improvement: -0.6%
- Largest improvement in instruction counts: -0.8% on
incr-full
builds of ucd check
- Largest regression in instruction counts: 2.7% on
full
builds of deeply-nested-async check
- This led to a larger regression than was seen before the PR was merged.
- The author is now looking into the perf
Simplify rustc_serialize by dropping support for decoding into JSON #93839
- Average relevant regression: 0.8%
- Average relevant improvement: -0.5%
- Largest improvement in instruction counts: -0.5% on
incr-unchanged
builds of ctfe-stress-4 check
- Largest regression in instruction counts: 1.0% on
full
builds of externs opt
- This change was justified: The performance changes to the compiler are pretty much a wash, but this does have a good impact on compiler bootstrapping (~6 seconds).
Introduce ChunkedBitSet
and use it for some dataflow analyses. #93984
- Average relevant regression: 1.0%
- Average relevant improvement: -3.8%
- Largest improvement in instruction counts: -5.3% on
full
builds of keccak debug
- Largest regression in instruction counts: 6.0% on
full
builds of clap-rs check
- While the regressions look minor they are likely even less of an issue due to this particular optimization likely helping wall-time and definitely helping max RSS while hurting instruction counts.
- For more detail see the justification.
Untriaged Pull Requests
- #94103 Rollup of 9 pull requests
- #94072 Rollup of 8 pull requests
- #93670 Apply noundef attribute to &T, &mut T, Box, bool
- #93505 safely
transmute<&List<Ty<'tcx>>, &List<GenericArg<'tcx>>>
- #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
- #92911 Guard against unwinding in cleanup code
- #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