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