2021-11-30 Triage Log

Overall, many changes this week, but overall an improvement on multiple benchmarks over the week from a number of pull requests dedicated to optimizations of certain patterns. We are still seeing a large number of spurious changes due to rustc-perf#1105, which has yet to be addressed.

Triage done by @simulacrum. Revision range: 22c2d9ddbf356bcdb718e88ca6ee3665e1e42690..1c0287830e0fb3c4007afea2819ba03766da6e9c

4 Regressions, 4 Improvements, 9 Mixed; 5 of them in rollups 41 comparisons made in total

Regressions

Mark places as initialized when mutably borrowed #90788

  • Moderate regression in instruction counts (up to 0.6% on full builds of match-stress-enum)
  • Fix for a miscompilation, so necessary regression.

Visit param_env field in Obligation's TypeFoldable impl #91205

  • Very large regression in instruction counts (up to 6.6% on full builds of hyper-2)
  • Fix for incorrect code, regressions unfortunately unavoidable.

Improvements

Rollup of 6 pull requests #91159

  • Moderate improvement in instruction counts (up to -0.6% on full builds of match-stress-enum)
  • Presumably due to #91140. Otherwise not clear what the cause is, but as a small improvement, unlikely to devote significant time to it.

Optimize live point computation #90491

  • Very large improvement in instruction counts (up to -29.2% on full builds of issue-58319)
  • Expected per PR benchmarking, benefitting both stress tests and some real-world code.

Remove eval_always from upvars. #90580

  • Small improvement in instruction counts (up to -0.7% on incr-unchanged builds of style-servo)
  • Small optimization to query system.

Rollup of 8 pull requests #91388

  • Large improvement in instruction counts (up to -1.5% on full builds of futures)
  • Unclear cause for the improvement, but as an improvement, unlikely to devote significant time to it.

Mixed

Avoid generating empty closures for fieldless enum variants #89881

  • Small improvement in instruction counts (up to -1.6% on incr-patched: add static arr item builds of coercions)
  • Small regression in instruction counts (up to 0.6% on incr-unchanged builds of clap-rs)
  • Primarily benefits bootstrap time (-5.4 seconds, -0.7%), instruction count changes largely real but not avoidable (differences in LLVM decision making).

Remove eval_always for inherent_impls. #90579

Faster Layout::array #91246

  • Large improvement in instruction counts (up to -4.2% on incr-unchanged builds of deep-vector)
  • Very large regression in instruction counts (up to 5.0% on incr-unchanged builds of inflate)
  • Most prominent regression is spurious, and overall this looks like improvements outweighing regressions.

Rollup of 7 pull requests #91269

  • Very large improvement in instruction counts (up to -5.1% on incr-unchanged builds of inflate)
  • Very large regression in instruction counts (up to 18.3% on incr-unchanged builds of clap-rs)
  • Regressions seem potentially real, but may also be related to rustc-perf#1105. Locally this seems to not be the case, though, so it seems probable that the regression is real.

Rollup of 6 pull requests #91288

  • Small improvement in instruction counts (up to -1.0% on incr-patched: b9b3e592dd cherry picked builds of style-servo)
  • Large regression in instruction counts (up to 1.7% on full builds of externs)
  • Seems to be a genuine regression. Unclear what the cause is.

Make TypeFolder::fold_* return Result #91230

  • Large improvement in instruction counts (up to -1.0% on incr-full builds of deeply-nested-async)
  • Large regression in instruction counts (up to 4.0% on incr-unchanged builds of deep-vector)
  • Regressions seem genuine, but are likely to be shuffling of instruction sequences rather than something directly addressable.

Update libc to 0.2.108 #90681

  • Very large improvement in instruction counts (up to -15.3% on incr-unchanged builds of clap-rs)
  • Large regression in instruction counts (up to 3.0% on incr-unchanged builds of deeply-nested-async)
  • Looks like a genuine regression, potentially slightly more work at crate loading time.

Tokenize emoji as if they were valid identifiers #88781

  • Small improvement in instruction counts (up to -0.8% on full builds of deeply-nested)
  • Small regression in instruction counts (up to 0.3% on incr-full builds of deeply-nested-async)
  • Genuine regression; more expensive logic in tokenization.

Rollup of 6 pull requests #91221

  • Moderate improvement in instruction counts (up to -1.3% on incr-unchanged builds of wg-grammar)
  • Small regression in instruction counts (up to 0.6% on full builds of ctfe-stress-4)
  • Regression seems genuine, though cause is unclear.

Untriaged Pull Requests

60 untriaged pull requests.