2020-12-15 Triage Log

A week dominated by small regressions with only 1 modest yet clear performance gain. None of the regressions are large enough to cause concern, but there should be a followup to some to ensure that those regressions are at least examined.

Triage done by @rylev. Revision range: 4fd4a98d4788bc987d7f7add9df5f5ead6a1c15e..e1cce06e4ff5206daf397e1dcf91ed53653be171

6 Regressions, 1 Improvements, 2 Mixed 0 of them in rollups

Regressions

Also generate StorageDead in constants#78679

  • Large regression in instruction counts (up to 5.7% on incr-patched: new row builds of tuple-stress-check)
  • A removal of special casing of not marking statics and constants as StorageDead inside rustc_mir.
  • This was regression was deemed as acceptable due to being more correct than the previous implementation.

Properly re-use def path hash in incremental mode#79721

Accept arbitrary expressions in key-value attributes at parse time#78837

Capture precise paths in THIR and MIR#79553

  • Moderate regression in instruction counts (up to 4.5% on incr-unchanged builds of clap-rs-check)
  • While this change powers a feature behind a feature flag (capture_disjoint_fields), it looks like it's still causing perf regressions in workloads not using this feature.
  • This is a known issue with a plan for how to recover the performance loss.

Create rustc_type_ir#79169

  • Moderate regression in instruction counts (up to 3.1% on full builds of ctfe-stress-4-check)

Update stdarch submodule#79938

  • Moderate regression in instruction counts (up to 1.4% on incr-unchanged builds of deeply-nested-debug)
  • This was a wholesale update of the stdarch submodule.
  • stdarch is using const arguments that would benefit from const generics. This might explain why compilation suffers.

Improvements

Compress RWU from at least 32 bits to 4 bits#79727

  • Moderate improvement in instruction counts (up to -4.8% on full builds of clap-rs-check)
  • This was explicitly an experiment to gain performance, and it seems to worked fairly well. Other bit representations were tested but the one chosen was the most efficient.

Mixed

Use def_path_hash_to_def_id when re-using a RawDefId#79915

  • Moderate improvement in instruction counts (up to -3.5% on incr-unchanged builds of clap-rs-check)
  • Moderate regression in instruction counts (up to 2.7% on incr-patched: dummy fn builds of unused-warnings-check)
  • The amount of regressions outweighs the improvements (which were just in the clap benchmark).
  • This is a followup fix to #79721. Overall these regressions still represent a perf gain when compared to before the changes introduced in #74967.

Lower discriminant_value intrinsic#79922

  • Moderate improvement in instruction counts (up to -3.9% on full builds of match-stress-enum-check)
  • Smaller regression in instruction counts (up to 1.3% on incr-unchanged builds of clap-rs-check)
  • The improvement outweighs the regression.

Nags requiring follow up

  • Several regressions need followup investigations. See their respective entries above for the issue.
  • As mentioned last week, stdarch expansion causing a 40% libcore compile time regression is still not resolved, and resolution is unclear. This is likely a related issue to the stdarch regression listed above.