Skip to content

Commit d8b7b5b

Browse files
committed
Regenerate uninhabited_enum_branching.rs
1 parent 8c9a75b commit d8b7b5b

7 files changed

+226
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
- // MIR for `byref` before UninhabitedEnumBranching
2+
+ // MIR for `byref` after UninhabitedEnumBranching
3+
4+
fn byref() -> () {
5+
let mut _0: ();
6+
let _1: Plop;
7+
let mut _2: Test3;
8+
let _3: &str;
9+
let mut _4: &Test3;
10+
let mut _5: isize;
11+
let _6: &str;
12+
let _7: &str;
13+
let _8: &str;
14+
let _9: &str;
15+
let mut _10: isize;
16+
let _11: &str;
17+
let _12: &str;
18+
let _13: &str;
19+
scope 1 {
20+
debug plop => _1;
21+
}
22+
23+
bb0: {
24+
StorageLive(_1);
25+
StorageLive(_2);
26+
_2 = Test3::C;
27+
_1 = Plop { xx: const 51_u32, test3: move _2 };
28+
StorageDead(_2);
29+
StorageLive(_3);
30+
StorageLive(_4);
31+
_4 = &(_1.1: Test3);
32+
_5 = discriminant((*_4));
33+
- switchInt(move _5) -> [0: bb3, 1: bb4, 2: bb5, 3: bb2, otherwise: bb1];
34+
+ switchInt(move _5) -> [0: bb12, 1: bb12, 2: bb5, 3: bb2, otherwise: bb12];
35+
}
36+
37+
bb1: {
38+
unreachable;
39+
}
40+
41+
bb2: {
42+
StorageLive(_8);
43+
_8 = const "D";
44+
_3 = &(*_8);
45+
StorageDead(_8);
46+
goto -> bb6;
47+
}
48+
49+
bb3: {
50+
_3 = const "A(Empty)";
51+
goto -> bb6;
52+
}
53+
54+
bb4: {
55+
StorageLive(_6);
56+
_6 = const "B(Empty)";
57+
_3 = &(*_6);
58+
StorageDead(_6);
59+
goto -> bb6;
60+
}
61+
62+
bb5: {
63+
StorageLive(_7);
64+
_7 = const "C";
65+
_3 = &(*_7);
66+
StorageDead(_7);
67+
goto -> bb6;
68+
}
69+
70+
bb6: {
71+
StorageDead(_4);
72+
StorageDead(_3);
73+
StorageLive(_9);
74+
_10 = discriminant((_1.1: Test3));
75+
- switchInt(move _10) -> [0: bb8, 1: bb9, 2: bb10, 3: bb7, otherwise: bb1];
76+
+ switchInt(move _10) -> [0: bb12, 1: bb12, 2: bb10, 3: bb7, otherwise: bb12];
77+
}
78+
79+
bb7: {
80+
StorageLive(_13);
81+
_13 = const "D";
82+
_9 = &(*_13);
83+
StorageDead(_13);
84+
goto -> bb11;
85+
}
86+
87+
bb8: {
88+
_9 = const "A(Empty)";
89+
goto -> bb11;
90+
}
91+
92+
bb9: {
93+
StorageLive(_11);
94+
_11 = const "B(Empty)";
95+
_9 = &(*_11);
96+
StorageDead(_11);
97+
goto -> bb11;
98+
}
99+
100+
bb10: {
101+
StorageLive(_12);
102+
_12 = const "C";
103+
_9 = &(*_12);
104+
StorageDead(_12);
105+
goto -> bb11;
106+
}
107+
108+
bb11: {
109+
StorageDead(_9);
110+
_0 = const ();
111+
StorageDead(_1);
112+
return;
113+
+ }
114+
+
115+
+ bb12: {
116+
+ unreachable;
117+
}
118+
}
119+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
- // MIR for `custom_discriminant` before UninhabitedEnumBranching
2+
+ // MIR for `custom_discriminant` after UninhabitedEnumBranching
3+
4+
fn custom_discriminant() -> () {
5+
let mut _0: ();
6+
let _1: &str;
7+
let mut _2: Test2;
8+
let mut _3: isize;
9+
let _4: &str;
10+
11+
bb0: {
12+
StorageLive(_1);
13+
StorageLive(_2);
14+
_2 = Test2::D;
15+
_3 = discriminant(_2);
16+
- switchInt(move _3) -> [4: bb3, 5: bb2, otherwise: bb1];
17+
+ switchInt(move _3) -> [4: bb3, 5: bb2, otherwise: bb5];
18+
}
19+
20+
bb1: {
21+
unreachable;
22+
}
23+
24+
bb2: {
25+
StorageLive(_4);
26+
_4 = const "E";
27+
_1 = &(*_4);
28+
StorageDead(_4);
29+
goto -> bb4;
30+
}
31+
32+
bb3: {
33+
_1 = const "D";
34+
goto -> bb4;
35+
}
36+
37+
bb4: {
38+
StorageDead(_2);
39+
StorageDead(_1);
40+
_0 = const ();
41+
return;
42+
+ }
43+
+
44+
+ bb5: {
45+
+ unreachable;
46+
}
47+
}
48+

tests/mir-opt/uninhabited_enum_branching.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//@ unit-test: UninhabitedEnumBranching
2+
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
3+
24
enum Empty {}
35

46
// test matching an enum with uninhabited variants
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
- // MIR for `simple` before UninhabitedEnumBranching
2+
+ // MIR for `simple` after UninhabitedEnumBranching
3+
4+
fn simple() -> () {
5+
let mut _0: ();
6+
let _1: &str;
7+
let mut _2: Test1;
8+
let mut _3: isize;
9+
let _4: &str;
10+
let _5: &str;
11+
12+
bb0: {
13+
StorageLive(_1);
14+
StorageLive(_2);
15+
_2 = Test1::C;
16+
_3 = discriminant(_2);
17+
- switchInt(move _3) -> [0: bb3, 1: bb4, 2: bb2, otherwise: bb1];
18+
+ switchInt(move _3) -> [0: bb6, 1: bb6, 2: bb2, otherwise: bb6];
19+
}
20+
21+
bb1: {
22+
unreachable;
23+
}
24+
25+
bb2: {
26+
StorageLive(_5);
27+
_5 = const "C";
28+
_1 = &(*_5);
29+
StorageDead(_5);
30+
goto -> bb5;
31+
}
32+
33+
bb3: {
34+
_1 = const "A(Empty)";
35+
goto -> bb5;
36+
}
37+
38+
bb4: {
39+
StorageLive(_4);
40+
_4 = const "B(Empty)";
41+
_1 = &(*_4);
42+
StorageDead(_4);
43+
goto -> bb5;
44+
}
45+
46+
bb5: {
47+
StorageDead(_2);
48+
StorageDead(_1);
49+
_0 = const ();
50+
return;
51+
+ }
52+
+
53+
+ bb6: {
54+
+ unreachable;
55+
}
56+
}
57+

0 commit comments

Comments
 (0)