2021-10-26 Triage Log
Multiple regressions this week, several of which were in rollups, without much to balance them out on the improvements front.
Triage done by @simulacrum. Revision range: d45ed7502ad225739270a368528725930f54b7b6..3c8f001d454b1b495f7472d8430ef8fdf10aac11
5 Regressions, 4 Improvements, 3 Mixed; 3 of them in rollups; 35 comparisons made in total
Regressions
resolve: Use NameBinding
for local variables and generic parameters #89100
- Very large regression in instruction counts (up to 99.5% on
incr-unchanged
builds of style-servo
) - Reverted in #90130.
Rollup of 6 pull requests #90235
- Very large regression in instruction counts (up to 9.8% on
incr-full
builds of deeply-nested-async
) - Probably caused by new compiler-internal lint (#89558), which appears to be run on end-user code (despite being allow-by-default). Suggested a few possible fixes or a revert if we can't do so quickly.
Inline CStr::from_ptr #90007
- Small regression in instruction counts (up to 0.4% on
incr-unchanged
builds of helloworld
) - Regression limited to stress tests and fairly minor. Seems likely to be a litle extra work in codegen, as the regressions are all in -opt builds. This change is done to permit better optimization, skipping a call to strlen in some cases, so seems worthwhile.
Implement coherence checks for negative trait impls #90104
- Small regression in instruction counts (up to 0.6% on
full
builds of diesel
) - Looks like a real regression, but the feature is important and the regression is relatively small.
Rollup of 5 pull requests #90203
- Moderate regression in instruction counts (up to 0.6% on
full
builds of externs
) - Regression limited to rustdoc, likely due to the addition of code-scraping from the examples directory. Does not seem major enough to warrant deep investigation, but have left a comment on the likely PR.
Improvements
Adopt let_else across the compiler #89933
- Moderate improvement in instruction counts (up to -0.8% on
incr-unchanged
builds of deeply-nested-async
) - Not clear exactly what the speedup comes from, but seems generally positive.
Revert “resolve: Use NameBinding for local variables and generic parameters” #90130
- Very large improvement in instruction counts (up to -49.8% on
incr-unchanged
builds of style-servo
) - Reverting a regression listed above.
Specialize HashStable for [u8] slices #90208
- Very large improvement in instruction counts (up to -8.0% on
incr-full
builds of ctfe-stress-4
) - Found as part of perf investigation, speeds up primarily CTFE-heavy workloads.
Build the query vtable directly. #90210
- Small improvement in instruction counts (up to -0.8% on
incr-unchanged
builds of helloworld
) - Nice win on many benchmarks, though a small one.
Mixed
Rollup of 10 pull requests #90067
- Small improvement in instruction counts (up to -1.4% on
incr-patched: println
builds of coercions
) - Moderate regression in instruction counts (up to 1.1% on
incr-patched: b9b3e592dd cherry picked
builds of style-servo
) - Left a comment with a few suggestions, but the regression and improvements seem both major and without obvious cause.
Merge the two depkind vtables #89978
- Moderate improvement in instruction counts (up to -2.0% on
incr-unchanged
builds of helloworld
) - Moderate regression in instruction counts (up to 0.9% on
incr-unchanged
builds of clap-rs
) - Improvements mostly outweigh the regressions
Make new symbol mangling scheme default for compiler itself. #90054
- Moderate improvement in instruction counts (up to -0.8% on
incr-unchanged
builds of deeply-nested-async
) - Moderate regression in instruction counts (up to 0.4% on
incr-unchanged
builds of deep-vector
) - Mostly improvements, and digging in is hard since tools like rustfilt have slightly different output across the symbol mangling boundary. Regressions seem limited to a just a few benchmarks and are small enough that this seems acceptable.
Untriaged Pull Requests