Skip to content

Commit 2b156ba

Browse files
committed
Update the test case for SimplifyCfg-after-unreachable-enum-branching
1 parent 1b13179 commit 2b156ba

3 files changed

+67
-38
lines changed
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,27 @@
55
let mut _0: u8;
66

77
bb0: {
8-
- switchInt(_1) -> [0: bb1, 255: bb2, otherwise: bb3];
9-
+ switchInt(_1) -> [0: bb1, 255: bb1, otherwise: bb2];
8+
- switchInt(_1) -> [0: bb3, 1: bb2, 255: bb3, otherwise: bb4];
9+
+ switchInt(_1) -> [0: bb2, 1: bb1, 255: bb2, otherwise: bb3];
1010
}
1111

1212
bb1: {
13-
unreachable;
14-
}
15-
16-
bb2: {
17-
- unreachable;
13+
- _0 = const 1_u8;
14+
- return;
1815
- }
1916
-
17+
- bb2: {
18+
_0 = const 2_u8;
19+
return;
20+
}
21+
2022
- bb3: {
23+
+ bb2: {
24+
unreachable;
25+
}
26+
27+
- bb4: {
28+
+ bb3: {
2129
_0 = _1;
2230
return;
2331
}

tests/mir-opt/simplify_dead_blocks.rs

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
//@ unit-test: SimplifyCfg-after-unreachable-enum-branching
2+
#![feature(custom_mir, core_intrinsics)]
3+
#![crate_type = "lib"]
4+
5+
use std::intrinsics::mir::*;
6+
7+
// Check that we correctly cleaned up the dead BB.
8+
// EMIT_MIR simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff
9+
#[custom_mir(dialect = "runtime", phase = "post-cleanup")]
10+
pub unsafe fn assert_nonzero_nonmax(x: u8) -> u8 {
11+
// CHECK-LABEL: fn assert_nonzero_nonmax(
12+
// CHECK: bb0: {
13+
// CHECK-NEXT: switchInt({{.*}}) -> [0: [[unreachable:bb.*]], 1: [[retblock2:bb.*]], 255: [[unreachable:bb.*]], otherwise: [[retblock:bb.*]]];
14+
// CHECK-NEXT: }
15+
// CHECK-NOT: _0 = const 1_u8;
16+
// CHECK: [[retblock2]]: {
17+
// CHECK-NEXT: _0 = const 2_u8;
18+
// CHECK-NEXT: return;
19+
// CHECK-NEXT: }
20+
// CHECK: [[unreachable]]: {
21+
// CHECK-NEXT: unreachable;
22+
// CHECK-NEXT: }
23+
// CHECK: [[retblock]]: {
24+
// CHECK-NEXT: _0 = _1;
25+
// CHECK-NEXT: return;
26+
// CHECK-NEXT: }
27+
mir!(
28+
{
29+
match x {
30+
0 => unreachable,
31+
1 => retblock2,
32+
u8::MAX => unreachable,
33+
_ => retblock,
34+
}
35+
}
36+
deadRetblock1 = {
37+
RET = 1;
38+
Return()
39+
}
40+
retblock2 = {
41+
RET = 2;
42+
Return()
43+
}
44+
unreachable = {
45+
Unreachable()
46+
}
47+
retblock = {
48+
RET = x;
49+
Return()
50+
}
51+
)
52+
}

tests/mir-opt/simplify_duplicate_unreachable_blocks.rs

-31
This file was deleted.

0 commit comments

Comments
 (0)