2020-09-21 Triage Log

This was the first week of semi-automated perf triage, and thank goodness: There was a lot going on. Most regressions are either quite small or already have a fix published.

#72412 is probably the most interesting case. It fixes a pathological problem involving nested closures by adding cycle detection to what seems to be a relatively hot part of the code. As a result, most users will see a slight compile-time regression for their crates.

Triage done by @ecstaticmorse. Revision range: dbb73f8f79ab176a897d5a95e696adb71b957cbe..b01326ab033e41986d4a5c8b96ce4f40f3b38e30

2 Regressions, 5 Improvements, 4 Mixed, 1 of them in rollups

Regressions

#76575 compare generic constants using AbstractConsts

#74040 fix unification of const variables

  • Moderate regression in instruction counts (up to 3.3% on incr-full builds of coercions-debug)

Improvements

#76656 Don't query stability data when staged_api is off

  • Moderate improvement in instruction counts (up to -1.5% on incr-unchanged builds of many-assoc-items-check)

#76311 Split core::slice to smaller mods

  • Moderate improvement in instruction counts (up to -1.9% on full builds of html5ever-opt)
  • Very odd, since this just split up a file.

#76880 Update cc crate to 1.0.60 to understand aarch64-apple-darwin with clang

  • Moderate improvement in instruction counts (up to -1.0% on incr-patched: Compiler new builds of regex-opt)

#76975 Rollup of 15 pull requests

  • Moderate improvement in instruction counts on exactly encoding-check (-2.0% on incr-full builds)

#76680 Make ensure_sufficient_stack() non-generic, using cargo-llvm-lines

  • Moderate improvement in instruction counts (up to -3.2% on incr-full builds of coercions-debug)

Mixed

#76244 Removing the def_id field from hot ParamEnv to make it smaller

  • Moderate regression in instruction counts (up to 3.3% on full builds of unicode_normalization-check)
  • Moderate improvement in instruction counts (up to -1.8% on full builds of ctfe-stress-4-check)
  • A fix has been published as #76913.

#72412 Issue 72408 nested closures exponential

  • Very large improvement in instruction counts (up to -99.9% on incr-unchanged builds of deeply-nested-closures-opt)
  • Moderate regression in instruction counts (up to 1.5% on full builds of coercions-check)
  • Fixes a pathological case, but slows down normal builds slightly.
  • Might be worth investigating to see if we can do better, although the author seems to have done a pretty thorough job.

#74949 Validate constants during const_eval_raw

  • Very large regression in instruction counts (up to 515.8% on incr-unchanged builds of ctfe-stress-4-check)
  • Moderate improvement in instruction counts (up to -2.7% on incr-patched: add static arr item builds of coercions-check)
  • A fix has been published as #77006.

#75119 New MIR optimization pass to reduce branches on match of tuples of enums

  • Moderate improvement in instruction counts (up to -1.6% on full builds of style-servo-opt)
  • Moderate regression in instruction counts (up to 1.3% on full builds of wf-projection-stress-65510-check)
  • Seems to have been a regression overall. If there's no improvment in the generated code, we should disable this.

Nags requiring follow up