2024-03-26 Triage Log

An overall fairly quiet week with the unfortunate one exception of large instruction count and binary size regressions caused by changes in const evaluation. This was largely balanced out (at least in instruction count) by a group of small improvements, but the compiler did end up 0.2% slower on average across 97 benchmarks.

Triage done by @rylev. Revision range: 21d94a3..73476d

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.0%[0.2%, 3.2%]56
Regressions ❌
(secondary)
0.6%[0.1%, 1.9%]38
Improvements ✅
(primary)
-0.8%[-1.5%, -0.2%]41
Improvements ✅
(secondary)
-1.2%[-5.2%, -0.4%]13
All ❌✅ (primary)0.2%[-1.5%, 3.2%]97

4 Regressions, 6 Improvements, 2 Mixed; 4 of them in rollups 63 artifact comparisons made in total

Regressions

recursively evaluate the constants in everything that is ‘mentioned’ #122568 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.0%[0.3%, 2.2%]67
Regressions ❌
(secondary)
0.8%[0.2%, 2.9%]24
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)1.0%[0.3%, 2.2%]67
  • An unfortunately large regression in instruction count that has to happen for correctness reasons.
  • Additional regressions in binary size and an issue has been opened for it: #122936

Rollup of 8 pull requests #122900 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.5%[0.4%, 0.6%]11
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0
  • Seems that #122784 is the cause. Author and reviewer were pinged.

Replace visibility test with reachability test in dead code detection #119552 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
2.1%[1.0%, 3.2%]4
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)2.1%[1.0%, 3.2%]4
  • More warnings are now emitted from ripgrep so this is to be expected

Rollup of 9 pull requests #122966 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.3%, 0.3%]1
Regressions ❌
(secondary)
0.3%[0.2%, 0.4%]6
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.3%[0.3%, 0.3%]1
  • The regressions are probably too small here for us to need to dig much deeper.

Improvements

clean up Sized checking #122493 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.4%[-0.6%, -0.3%]2
Improvements ✅
(secondary)
-0.7%[-3.2%, -0.3%]11
All ❌✅ (primary)-0.4%[-0.6%, -0.3%]2

Move more intrinsics to rustc_intrinsic #122037 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.3%[-0.3%, -0.2%]4
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.3%[-0.3%, -0.2%]4

Update cargo #122753 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.8%[-0.9%, -0.5%]5
Improvements ✅
(secondary)
-0.6%[-0.8%, -0.4%]8
All ❌✅ (primary)-0.8%[-0.9%, -0.5%]5

select Vec::from_iter impls in a const block to optimize compile times #122785 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.6%[-1.5%, -0.3%]10
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.6%[-1.5%, -0.3%]10

Replace mir_built query with a hook and use mir_const everywhere instead #122721 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.5%[0.5%, 0.5%]1
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.4%[-0.9%, -0.2%]17
Improvements ✅
(secondary)
-0.5%[-0.8%, -0.2%]11
All ❌✅ (primary)-0.3%[-0.9%, 0.5%]18

Don't emit load metadata in debug mode #122849 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.7%[-1.1%, -0.4%]13
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.7%[-1.1%, -0.4%]13

Mixed

Rollup of 10 pull requests #122735 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.3%[0.1%, 0.6%]5
Improvements ✅
(primary)
-0.7%[-0.8%, -0.3%]11
Improvements ✅
(secondary)
-0.3%[-0.3%, -0.3%]1
All ❌✅ (primary)-0.7%[-0.8%, -0.3%]11
  • The improvements outweigh the regressions so there's not a huge incentive to investigate further.

Rollup of 8 pull requests #122830 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.1%[0.1%, 0.1%]2
Improvements ✅
(primary)
-0.3%[-0.4%, -0.2%]2
Improvements ✅
(secondary)
-1.2%[-1.7%, -0.8%]8
All ❌✅ (primary)-0.3%[-0.4%, -0.2%]2
  • With only small regressions on stress tests, I think it‘s fine if we don’t investigate this too deeply.