@@ -21,8 +21,8 @@ fn guard2(_:i32) -> bool {
21
21
fn full_tested_match ( )
22
22
{
23
23
let _ = match Some ( 42 ) {
24
- Some ( _ ) if guard ( ) => 1 ,
25
- Some ( _ ) => 2 ,
24
+ Some ( x ) if guard ( ) => 1 + x ,
25
+ Some ( y ) => 2 + y ,
26
26
None => 3
27
27
} ;
28
28
}
@@ -42,125 +42,129 @@ fn main() {
42
42
// bb0: {
43
43
// ...
44
44
// _2 = std::option::Option<i32>::Some(const 42i32,);
45
- // _3 = discriminant(_2);
46
- // switchInt(_3 ) -> [0isize: bb8 , otherwise: bb9 ];
45
+ // _5 = discriminant(_2);
46
+ // switchInt(_5 ) -> [0isize: bb6 , otherwise: bb7 ];
47
47
// }
48
48
// bb1: { // arm1
49
- // _1 = const 1i32;
50
- // goto -> bb13;
49
+ // StorageLive(_7);
50
+ // _7 = _3;
51
+ // _1 = Add(const 1i32, _7);
52
+ // ...
53
+ // goto -> bb11;
51
54
// }
52
- // bb2: { // arm2
53
- // _1 = const 2i32;
54
- // goto -> bb13;
55
+ // bb2: { // binding1 guard
56
+ // StorageLive(_3);
57
+ // _3 = ((_2 as Some).0: i32);
58
+ // StorageLive(_6);
59
+ // _6 = const guard() -> bb8;
55
60
// }
56
- // bb3: { // arm3
57
- // _1 = const 3i32;
58
- // goto -> bb13;
61
+ // bb3: { // binding2 & arm2
62
+ // StorageLive(_4);
63
+ // _4 = ((_2 as Some).0: i32);
64
+ // StorageLive(_8);
65
+ // _8 = _4;
66
+ // _1 = Add(const 2i32, _8);
67
+ // StorageDead(_8);
68
+ // goto -> bb11;
59
69
// }
60
- // bb4: { // binding1
61
- // ...
62
- // _4 = const guard() -> bb10 ;
70
+ // bb4: { // binding3(empty) arm3
71
+ // _1 = const 3i32;
72
+ // goto -> bb11 ;
63
73
// }
64
- // bb5: { // binding2
65
- // falseEdges -> [real: bb2, imaginary: bb6] ;
74
+ // bb5: {
75
+ // unreachable ;
66
76
// }
67
- // bb6: { // binding3
68
- // falseEdges -> [real: bb3 , imaginary: bb7];
77
+ // bb6: {
78
+ // falseEdges -> [real: bb4 , imaginary: bb5]; // from before_binding3 to unreachable
69
79
// }
70
80
// bb7: {
71
- // unreachable;
81
+ // falseEdges -> [real: bb2, imaginary: bb3]; // from before_binding1 to binding2
72
82
// }
73
83
// bb8: {
74
- // falseEdges -> [real: bb6, imaginary: bb7 ]; // from before_binding3 to unreachable
84
+ // switchInt(_6) -> [0u8: bb9, otherwise: bb1 ]; // end of guard
75
85
// }
76
86
// bb9: {
77
- // falseEdges -> [real: bb4 , imaginary: bb5 ]; // from before_binding1 to binding2
87
+ // falseEdges -> [real: bb10 , imaginary: bb3 ]; // after_guard to binding2
78
88
// }
79
89
// bb10: {
80
- // switchInt(_4) -> [0u8: bb11, otherwise: bb1 ]; // end of guard
90
+ // falseEdges -> [real: bb3, imaginary: bb4 ]; // from before_binding2 to binding3
81
91
// }
82
92
// bb11: {
83
- // falseEdges -> [real: bb12, imaginary: bb5]; // after_guard to binding2
84
- // }
85
- // bb12: {
86
- // falseEdges -> [real: bb5, imaginary: bb6]; // from before_binding2 to binding3
87
- // }
88
- // bb13: {
89
93
// ...
90
94
// return;
91
95
// }
92
96
//
93
97
//
94
98
// END rustc.node17.NLL.before.mir
95
99
//
96
- // START rustc.node36 .NLL.before.mir
100
+ // START rustc.node40 .NLL.before.mir
97
101
// bb0: {
98
102
// ...
99
103
// _2 = std::option::Option<i32>::Some(const 1i32,);
100
104
// _7 = discriminant(_2);
101
- // switchInt(_7) -> [1isize: bb10 , otherwise: bb13 ];
105
+ // switchInt(_7) -> [1isize: bb8 , otherwise: bb11 ];
102
106
// }
103
107
// bb1: { // arm1
104
108
// _1 = const 1i32;
105
- // goto -> bb17;
106
- // }
107
- // bb2: { // arm2
108
- // _1 = const 2i32;
109
- // goto -> bb17;
109
+ // goto -> bb15;
110
110
// }
111
- // bb3 : { // arm3
111
+ // bb2 : { // arm3
112
112
// _1 = const 3i32;
113
- // goto -> bb17 ;
113
+ // goto -> bb15 ;
114
114
// }
115
- // bb4: { // arm4
116
- // _1 = const 4i32;
117
- // goto -> bb17;
118
- // }
119
- // bb5: { // binding1: Some(w) if guard() =>
120
- // ...
121
- // _8 = const guard() -> bb11;
115
+ // bb3: { // binding1: Some(w) if guard() =>
116
+ // StorageLive(_3);
117
+ // _3 = ((_2 as Some).0: i32);
118
+ // StorageLive(_8);
119
+ // _8 = const guard() -> bb9;
122
120
// }
123
- // bb6 : { // binding2: x =>
124
- // ...
121
+ // bb4 : { // binding2 & arm2
122
+ // StorageLive(_4);
125
123
// _4 = _2;
126
- // falseEdges -> [real: bb2, imaginary: bb7]; // after binding2 to binding3
127
- // }
128
- // bb7: { // binding3: Some(y) if guard2(y) =>
129
- // ...
130
- // _10 = const guard2(_11) -> bb14;
131
- // }
132
- // bb8: { // binding4: z_ =>
133
- // ...
124
+ // _1 = const 2i32;
125
+ // goto -> bb15;
126
+ // }
127
+ // bb5: { // binding3: Some(y) if guard2(y) =>
128
+ // StorageLive(_5);
129
+ // _5 = ((_2 as Some).0: i32);
130
+ // StorageLive(_10);
131
+ // StorageLive(_11);
132
+ // _11 = _5;
133
+ // _10 = const guard2(_11) -> bb12;
134
+ // }
135
+ // bb6: { // binding4 & arm4
136
+ // StorageLive(_6);
134
137
// _6 = _2;
135
- // falseEdges -> [real: bb4, imaginary: bb9]; // after binding3 to unreachable
138
+ // _1 = const 4i32;
139
+ // goto -> bb15;
136
140
// }
137
- // bb9 : {
141
+ // bb7 : {
138
142
// unreachable;
139
143
// }
144
+ // bb8: {
145
+ // falseEdges -> [real: bb3, imaginary: bb4]; // from before_binding1 to binding2
146
+ // }
147
+ // bb9: {
148
+ // switchInt(_8) -> [0u8: bb10, otherwise: bb1]; // end of gurard
149
+ // }
140
150
// bb10: {
141
- // falseEdges -> [real: bb5 , imaginary: bb6 ]; // from before_binding1 to binding2
151
+ // falseEdges -> [real: bb11 , imaginary: bb4 ]; // after guard to binding2
142
152
// }
143
153
// bb11: {
144
- // switchInt(_8) -> [0u8: bb12, otherwise: bb1 ]; // end of gurard
154
+ // falseEdges -> [real: bb4, imaginary: bb5 ]; // from before_binding2 to binding3
145
155
// }
146
156
// bb12: {
147
- // falseEdges -> [real: bb13, imaginary: bb6]; // after guard to binding2
157
+ // StorageDead(_11);
158
+ // switchInt(_10) -> [0u8: bb13, otherwise: bb2]; // end of guard2
148
159
// }
149
160
// bb13: {
150
- // falseEdges -> [real: bb6 , imaginary: bb7 ]; // from before_binding2 to binding3
161
+ // falseEdges -> [real: bb14 , imaginary: bb6 ]; // after guard2 to binding4
151
162
// }
152
163
// bb14: {
153
- // ...
154
- // switchInt(_10) -> [0u8: bb15, otherwise: bb3]; // end of guard2
164
+ // falseEdges -> [real: bb6, imaginary: bb7]; // from befor binding4 to unreachable
155
165
// }
156
166
// bb15: {
157
- // falseEdges -> [real: bb16, imaginary: bb8]; // after guard2 to binding4
158
- // }
159
- // bb16: {
160
- // falseEdges -> [real: bb8, imaginary: bb9]; // from befor binding3 to binding4
161
- // }
162
- // bb17: {
163
167
// ...
164
168
// return;
165
169
// }
166
- // END rustc.node36 .NLL.before.mir
170
+ // END rustc.node40 .NLL.before.mir
0 commit comments