2022-07-05 Triage Log

Overall the week is a small improvement on average, with some benchmarks (particularly in the primary category) showing significant improvements due to the enablement of MIR inlining in #91743. Inlining promises to improve the quality of our generated LLVM IR and make other optimizations more worthwhile, so it's great to see these early results already being quite impactful.

Triage done by @simulacrum. Revision range: baf382e63c023259fa1f9042f8f479f183ca6ed3..880646ca9c6dc21e04efe2f1940369a45b71ff2d

Summary:

meanmaxcount
Regressions 😿
(primary)
1.9%11.9%111
Regressions 😿
(secondary)
3.4%11.9%106
Improvements πŸŽ‰
(primary)
-2.8%-9.7%105
Improvements πŸŽ‰
(secondary)
-4.4%-16.8%97
All πŸ˜ΏπŸŽ‰ (primary)-0.4%11.9%216

3 Regressions, 6 Improvements, 6 Mixed; 4 of them in rollups 46 artifact comparisons made in total

Regressions

Fix FFI-unwind unsoundness with mixed panic mode #97235 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.5%1.2%86
Regressions 😿
(secondary)
0.9%2.5%36
Improvements πŸŽ‰
(primary)
N/AN/A0
Improvements πŸŽ‰
(secondary)
N/AN/A0
All πŸ˜ΏπŸŽ‰ (primary)0.5%1.2%86

PR author notes this added a new query for each MIR body, so this is an expected regression, and given the soundness fix is not too large to need further investigation.

Rollup of 5 pull requests #98874 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.6%0.9%13
Regressions 😿
(secondary)
1.4%2.4%12
Improvements πŸŽ‰
(primary)
N/AN/A0
Improvements πŸŽ‰
(secondary)
N/AN/A0
All πŸ˜ΏπŸŽ‰ (primary)0.6%0.9%13

Some possibly real, though small, regressions. Unclear cause; rollup doesn't obviously contain any sensitive PRs.

Rollup of 8 pull requests #98904 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.7%0.9%8
Regressions 😿
(secondary)
1.1%2.3%16
Improvements πŸŽ‰
(primary)
N/AN/A0
Improvements πŸŽ‰
(secondary)
N/AN/A0
All πŸ˜ΏπŸŽ‰ (primary)0.7%0.9%8

Interestingly, regressions here are remarkably similar to those in #98874 (previous rollup in this list). Not seeing an obvious connection between the PRs in the two rollups, though.

Improvements

proc_macro/bridge: stop using a remote object handle for proc_macro Punct and Group #98188 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
N/AN/A0
Improvements πŸŽ‰
(primary)
-0.5%-1.4%15
Improvements πŸŽ‰
(secondary)
-1.6%-5.0%16
All πŸ˜ΏπŸŽ‰ (primary)-0.5%-1.4%15

Update smallvec to 1.8.1. #98558 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
N/AN/A0
Improvements πŸŽ‰
(primary)
N/AN/A0
Improvements πŸŽ‰
(secondary)
-1.7%-2.4%9
All πŸ˜ΏπŸŽ‰ (primary)N/AN/A0

CTFE interning: don‘t walk allocations that don’t need it #97585 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
N/AN/A0
Improvements πŸŽ‰
(primary)
-1.0%-1.0%2
Improvements πŸŽ‰
(secondary)
-2.5%-9.3%32
All πŸ˜ΏπŸŽ‰ (primary)-1.0%-1.0%2

Optimize Vec::insert for the case where index == len. #98755 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
N/AN/A0
Improvements πŸŽ‰
(primary)
-0.4%-1.0%8
Improvements πŸŽ‰
(secondary)
-1.2%-2.4%13
All πŸ˜ΏπŸŽ‰ (primary)-0.4%-1.0%8

fully move dropck to mir #98641 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.5%0.7%2
Regressions 😿
(secondary)
N/AN/A0
Improvements πŸŽ‰
(primary)
-0.7%-2.4%34
Improvements πŸŽ‰
(secondary)
-0.8%-2.1%22
All πŸ˜ΏπŸŽ‰ (primary)-0.7%-2.4%36

interpret: track place alignment together with the type, not the value #98846 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
N/AN/A0
Improvements πŸŽ‰
(primary)
-0.7%-0.9%8
Improvements πŸŽ‰
(secondary)
-1.2%-2.3%13
All πŸ˜ΏπŸŽ‰ (primary)-0.7%-0.9%8

Mixed

Rollup of 9 pull requests #98612 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.7%1.0%5
Regressions 😿
(secondary)
5.2%9.9%6
Improvements πŸŽ‰
(primary)
-1.0%-1.1%2
Improvements πŸŽ‰
(secondary)
-0.8%-2.4%22
All πŸ˜ΏπŸŽ‰ (primary)0.2%-1.1%7

Rollup of 7 pull requests #98656 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
1.4%11.3%131
Regressions 😿
(secondary)
3.5%11.2%73
Improvements πŸŽ‰
(primary)
N/AN/A0
Improvements πŸŽ‰
(secondary)
-2.2%-3.1%8
All πŸ˜ΏπŸŽ‰ (primary)1.4%11.3%131

Asked for further investigation on the PR, noting #98277 as a possible cause.

move MIR syntax into a dedicated file and ping some people whenever it changes #98649 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.5%0.5%1
Regressions 😿
(secondary)
1.6%4.3%20
Improvements πŸŽ‰
(primary)
-0.3%-0.4%5
Improvements πŸŽ‰
(secondary)
-0.3%-0.3%3
All πŸ˜ΏπŸŽ‰ (primary)-0.2%0.5%6

This is probably noise, but it's not very clear. Regressions are minor enough that further investigation does not seem warranted.

Enable MIR inlining #91743 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
1.3%7.2%54
Regressions 😿
(secondary)
1.7%6.1%68
Improvements πŸŽ‰
(primary)
-2.6%-10.0%118
Improvements πŸŽ‰
(secondary)
-3.4%-17.3%76
All πŸ˜ΏπŸŽ‰ (primary)-1.4%-10.0%172

A fairly large improvement for some benchmarks, and particularly large for bootstrap times (nearly 9% win). There are some fairly large regressions to a few select benchmarks which stress the inlining more than helping LLVM (e.g., stm32f4), but overall this is a great improvement in many cases.

Avoid unnecessary work in finalize_resolutions_in. #98569 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
0.3%0.5%7
Regressions 😿
(secondary)
0.5%0.7%7
Improvements πŸŽ‰
(primary)
-1.0%-1.0%2
Improvements πŸŽ‰
(secondary)
-2.1%-2.4%6
All πŸ˜ΏπŸŽ‰ (primary)0.0%-1.0%9

Wins/losses balance out; already labeled as triaged.

Don't use match-destructuring for derived ops on structs. #98446 (Comparison Link)

meanmaxcount
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
1.3%1.9%19
Improvements πŸŽ‰
(primary)
-0.6%-1.5%66
Improvements πŸŽ‰
(secondary)
-5.4%-12.3%33
All πŸ˜ΏπŸŽ‰ (primary)-0.6%-1.5%66

Overall an excellent, though somewhat small, improvement. Regressions are small and limited to a couple very artificial stress tests rather than real-world benchmarks.