Skip to content

Commit f160583

Browse files
committed
Disable the SimplifyArmIdentity pass on beta
This pass is buggy so I'm disabling it to fix a stable-to-beta regression. Related to #73223
1 parent a37c32e commit f160583

8 files changed

+87
-62
lines changed

src/librustc_mir/transform/simplify_try.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,11 @@ fn optimization_applies<'tcx>(
306306
}
307307

308308
impl<'tcx> MirPass<'tcx> for SimplifyArmIdentity {
309-
fn run_pass(&self, _: TyCtxt<'tcx>, source: MirSource<'tcx>, body: &mut Body<'tcx>) {
309+
fn run_pass(&self, tcx: TyCtxt<'tcx>, source: MirSource<'tcx>, body: &mut Body<'tcx>) {
310+
if tcx.sess.opts.debugging_opts.mir_opt_level < 2 {
311+
return;
312+
}
313+
310314
trace!("running SimplifyArmIdentity on {:?}", source);
311315
let (basic_blocks, local_decls) = body.basic_blocks_and_local_decls_mut();
312316
for bb in basic_blocks {

src/test/mir-opt/simplify-arm/rustc.id.SimplifyArmIdentity.diff

+8-9
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,14 @@
2626
}
2727

2828
bb3: {
29-
- StorageLive(_3); // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
30-
- _3 = ((_1 as Some).0: u8); // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
31-
- StorageLive(_4); // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
32-
- _4 = _3; // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
33-
- ((_0 as Some).0: u8) = move _4; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
34-
- discriminant(_0) = 1; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
35-
- StorageDead(_4); // scope 1 at $DIR/simplify-arm.rs:11:26: 11:27
36-
- StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:11:27: 11:28
37-
+ _0 = move _1; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
29+
StorageLive(_3); // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
30+
_3 = ((_1 as Some).0: u8); // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
31+
StorageLive(_4); // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
32+
_4 = _3; // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
33+
((_0 as Some).0: u8) = move _4; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
34+
discriminant(_0) = 1; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
35+
StorageDead(_4); // scope 1 at $DIR/simplify-arm.rs:11:26: 11:27
36+
StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:11:27: 11:28
3837
goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:10:5: 13:6
3938
}
4039

src/test/mir-opt/simplify-arm/rustc.id.SimplifyBranchSame.diff

+8-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@
2626
}
2727

2828
bb3: {
29-
_0 = move _1; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
29+
StorageLive(_3); // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
30+
_3 = ((_1 as Some).0: u8); // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
31+
StorageLive(_4); // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
32+
_4 = _3; // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
33+
((_0 as Some).0: u8) = move _4; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
34+
discriminant(_0) = 1; // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
35+
StorageDead(_4); // scope 1 at $DIR/simplify-arm.rs:11:26: 11:27
36+
StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:11:27: 11:28
3037
goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:10:5: 13:6
3138
}
3239

src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyArmIdentity.diff

+16-18
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@
2222
}
2323

2424
bb1: {
25-
- StorageLive(_5); // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
26-
- _5 = ((_1 as Err).0: i32); // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
27-
- StorageLive(_6); // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
28-
- _6 = _5; // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
29-
- ((_0 as Err).0: i32) = move _6; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
30-
- discriminant(_0) = 1; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
31-
- StorageDead(_6); // scope 2 at $DIR/simplify-arm.rs:19:24: 19:25
32-
- StorageDead(_5); // scope 0 at $DIR/simplify-arm.rs:19:25: 19:26
33-
+ _0 = move _1; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
25+
StorageLive(_5); // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
26+
_5 = ((_1 as Err).0: i32); // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
27+
StorageLive(_6); // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
28+
_6 = _5; // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
29+
((_0 as Err).0: i32) = move _6; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
30+
discriminant(_0) = 1; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
31+
StorageDead(_6); // scope 2 at $DIR/simplify-arm.rs:19:24: 19:25
32+
StorageDead(_5); // scope 0 at $DIR/simplify-arm.rs:19:25: 19:26
3433
goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
3534
}
3635

@@ -39,15 +38,14 @@
3938
}
4039

4140
bb3: {
42-
- StorageLive(_3); // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
43-
- _3 = ((_1 as Ok).0: u8); // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
44-
- StorageLive(_4); // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
45-
- _4 = _3; // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
46-
- ((_0 as Ok).0: u8) = move _4; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
47-
- discriminant(_0) = 0; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
48-
- StorageDead(_4); // scope 1 at $DIR/simplify-arm.rs:18:22: 18:23
49-
- StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:18:23: 18:24
50-
+ _0 = move _1; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
41+
StorageLive(_3); // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
42+
_3 = ((_1 as Ok).0: u8); // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
43+
StorageLive(_4); // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
44+
_4 = _3; // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
45+
((_0 as Ok).0: u8) = move _4; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
46+
discriminant(_0) = 0; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
47+
StorageDead(_4); // scope 1 at $DIR/simplify-arm.rs:18:22: 18:23
48+
StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:18:23: 18:24
5149
goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
5250
}
5351

src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyBranchSame.diff

+27-16
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,38 @@
1818

1919
bb0: {
2020
_2 = discriminant(_1); // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
21-
- switchInt(move _2) -> [0isize: bb3, 1isize: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
22-
+ goto -> bb1; // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
21+
switchInt(move _2) -> [0isize: bb3, 1isize: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
2322
}
2423

2524
bb1: {
26-
- _0 = move _1; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
27-
- goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
28-
- }
29-
-
30-
- bb2: {
31-
- unreachable; // scope 0 at $DIR/simplify-arm.rs:17:11: 17:12
32-
- }
33-
-
34-
- bb3: {
35-
_0 = move _1; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
36-
- goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
37-
+ goto -> bb2; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
25+
StorageLive(_5); // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
26+
_5 = ((_1 as Err).0: i32); // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
27+
StorageLive(_6); // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
28+
_6 = _5; // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
29+
((_0 as Err).0: i32) = move _6; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
30+
discriminant(_0) = 1; // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
31+
StorageDead(_6); // scope 2 at $DIR/simplify-arm.rs:19:24: 19:25
32+
StorageDead(_5); // scope 0 at $DIR/simplify-arm.rs:19:25: 19:26
33+
goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
3834
}
3935

40-
- bb4: {
41-
+ bb2: {
36+
bb2: {
37+
unreachable; // scope 0 at $DIR/simplify-arm.rs:17:11: 17:12
38+
}
39+
40+
bb3: {
41+
StorageLive(_3); // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
42+
_3 = ((_1 as Ok).0: u8); // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
43+
StorageLive(_4); // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
44+
_4 = _3; // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
45+
((_0 as Ok).0: u8) = move _4; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
46+
discriminant(_0) = 0; // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
47+
StorageDead(_4); // scope 1 at $DIR/simplify-arm.rs:18:22: 18:23
48+
StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:18:23: 18:24
49+
goto -> bb4; // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
50+
}
51+
52+
bb4: {
4253
return; // scope 0 at $DIR/simplify-arm.rs:21:2: 21:2
4354
}
4455
}

src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyArmIdentity.diff

+9-10
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,16 @@
4949
}
5050

5151
bb2: {
52-
- StorageLive(_10); // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
53-
- _10 = ((_3 as Ok).0: u8); // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
54-
- _2 = _10; // scope 5 at $DIR/simplify-arm.rs:24:13: 24:15
55-
- StorageDead(_10); // scope 0 at $DIR/simplify-arm.rs:24:14: 24:15
56-
+ _0 = move _3; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
52+
StorageLive(_10); // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
53+
_10 = ((_3 as Ok).0: u8); // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
54+
_2 = _10; // scope 5 at $DIR/simplify-arm.rs:24:13: 24:15
55+
StorageDead(_10); // scope 0 at $DIR/simplify-arm.rs:24:14: 24:15
5756
StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:24:15: 24:16
58-
- StorageLive(_11); // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
59-
- _11 = _2; // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
60-
- ((_0 as Ok).0: u8) = move _11; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
61-
- discriminant(_0) = 0; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
62-
- StorageDead(_11); // scope 1 at $DIR/simplify-arm.rs:25:9: 25:10
57+
StorageLive(_11); // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
58+
_11 = _2; // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
59+
((_0 as Ok).0: u8) = move _11; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
60+
discriminant(_0) = 0; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
61+
StorageDead(_11); // scope 1 at $DIR/simplify-arm.rs:25:9: 25:10
6362
StorageDead(_2); // scope 0 at $DIR/simplify-arm.rs:26:1: 26:2
6463
goto -> bb5; // scope 0 at $DIR/simplify-arm.rs:26:2: 26:2
6564
}

src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyBranchSame.diff

+9-1
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,16 @@
4949
}
5050

5151
bb2: {
52-
_0 = move _3; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
52+
StorageLive(_10); // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
53+
_10 = ((_3 as Ok).0: u8); // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
54+
_2 = _10; // scope 5 at $DIR/simplify-arm.rs:24:13: 24:15
55+
StorageDead(_10); // scope 0 at $DIR/simplify-arm.rs:24:14: 24:15
5356
StorageDead(_3); // scope 0 at $DIR/simplify-arm.rs:24:15: 24:16
57+
StorageLive(_11); // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
58+
_11 = _2; // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
59+
((_0 as Ok).0: u8) = move _11; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
60+
discriminant(_0) = 0; // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
61+
StorageDead(_11); // scope 1 at $DIR/simplify-arm.rs:25:9: 25:10
5462
StorageDead(_2); // scope 0 at $DIR/simplify-arm.rs:26:1: 26:2
5563
goto -> bb5; // scope 0 at $DIR/simplify-arm.rs:26:2: 26:2
5664
}

src/test/mir-opt/simplify_try_if_let/rustc.{{impl}}-append.SimplifyArmIdentity.diff

+5-6
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,11 @@
8080
StorageLive(_8); // scope 1 at $DIR/simplify_try_if_let.rs:26:29: 26:39
8181
_8 = ((_5 as Some).0: std::ptr::NonNull<Node>); // scope 1 at $DIR/simplify_try_if_let.rs:26:29: 26:39
8282
StorageLive(_9); // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
83-
- StorageLive(_10); // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
84-
- _10 = _8; // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
85-
- ((_9 as Some).0: std::ptr::NonNull<Node>) = move _10; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
86-
- discriminant(_9) = 1; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
87-
- StorageDead(_10); // scope 3 at $DIR/simplify_try_if_let.rs:28:61: 28:62
88-
+ _9 = move _5; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
83+
StorageLive(_10); // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
84+
_10 = _8; // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
85+
((_9 as Some).0: std::ptr::NonNull<Node>) = move _10; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
86+
discriminant(_9) = 1; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
87+
StorageDead(_10); // scope 3 at $DIR/simplify_try_if_let.rs:28:61: 28:62
8988
StorageLive(_11); // scope 3 at $DIR/simplify_try_if_let.rs:28:25: 28:38
9089
StorageLive(_12); // scope 3 at $DIR/simplify_try_if_let.rs:28:25: 28:29
9190
_12 = &mut _4; // scope 3 at $DIR/simplify_try_if_let.rs:28:25: 28:29

0 commit comments

Comments
 (0)