Skip to content

Commit 59d3184

Browse files
committed
add one more sample
1 parent cb2867d commit 59d3184

File tree

1 file changed

+68
-6
lines changed

1 file changed

+68
-6
lines changed

src/test/mir-opt/match_false_edges.rs

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,19 @@ fn guard2(_:i32) -> bool {
1818
true
1919
}
2020

21-
fn full_tested_match()
22-
{
21+
fn full_tested_match() {
2322
let _ = match Some(42) {
2423
Some(x) if guard() => 1 + x,
2524
Some(y) => 2 + y,
26-
None => 3
25+
None => 3,
26+
};
27+
}
28+
29+
fn full_tested_match2() {
30+
let _ = match Some(42) {
31+
Some(x) if guard() => 1 + x,
32+
None => 3,
33+
Some(y) => 2 + y,
2734
};
2835
}
2936

@@ -93,11 +100,66 @@ fn main() {
93100
// ...
94101
// return;
95102
// }
96-
//
97-
//
98103
// END rustc.node17.NLL.before.mir
99104
//
100105
// START rustc.node40.NLL.before.mir
106+
// bb0: {
107+
// ...
108+
// _2 = std::option::Option<i32>::Some(const 42i32,);
109+
// _5 = discriminant(_2);
110+
// switchInt(_5) -> [0isize: bb4, otherwise: bb3];
111+
// }
112+
// bb1: { // arm1
113+
// StorageLive(_7);
114+
// _7 = _3;
115+
// _1 = Add(const 1i32, _7);
116+
// ...
117+
// goto -> bb11;
118+
// }
119+
// bb2: { // binding3(empty) and arm3
120+
// _1 = const 3i32;
121+
// goto -> bb11;
122+
// }
123+
// bb3: {
124+
// falseEdges -> [real: bb7, imaginary: bb4]; //pre_binding1
125+
// }
126+
// bb4: {
127+
// falseEdges -> [real: bb2, imaginary: bb5]; //pre_binding2
128+
// }
129+
// bb5: {
130+
// falseEdges -> [real: bb10, imaginary: bb6]; //pre_binding3
131+
// }
132+
// bb6: {
133+
// unreachable;
134+
// }
135+
// bb7: { // binding1 and guard
136+
// StorageLive(_3);
137+
// _3 = ((_2 as Some).0: i32);
138+
// StorageLive(_6);
139+
// _6 = const guard() -> bb8;
140+
// }
141+
// bb8: { // end of guard
142+
// switchInt(_6) -> [0u8: bb9, otherwise: bb1];
143+
// }
144+
// bb9: { // to pre_binding2
145+
// falseEdges -> [real: bb5, imaginary: bb4];
146+
// }
147+
// bb10: { // binding2 and arm2
148+
// StorageLive(_4);
149+
// _4 = ((_2 as Some).0: i32);
150+
// StorageLive(_8);
151+
// _8 = _4;
152+
// _1 = Add(const 2i32, _8);
153+
// StorageDead(_8);
154+
// goto -> bb11;
155+
// }
156+
// bb11: {
157+
// ...
158+
// return;
159+
// }
160+
// END rustc.node40.NLL.before.mir
161+
//
162+
// START rustc.node63.NLL.before.mir
101163
// bb0: {
102164
// ...
103165
// _2 = std::option::Option<i32>::Some(const 1i32,);
@@ -171,4 +233,4 @@ fn main() {
171233
// ...
172234
// return;
173235
// }
174-
// END rustc.node40.NLL.before.mir
236+
// END rustc.node63.NLL.before.mir

0 commit comments

Comments
 (0)