]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/match_false_edges.main.PromoteTemps.before.mir
Fix diagnostic issue when using FakeReads in closures
[rust.git] / src / test / mir-opt / match_false_edges.main.PromoteTemps.before.mir
1 // MIR for `main` before PromoteTemps
2
3 fn main() -> () {
4     let mut _0: ();                      // return place in scope 0 at $DIR/match_false_edges.rs:34:11: 34:11
5     let mut _1: i32;                     // in scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
6     let mut _2: std::option::Option<i32>; // in scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
7     let mut _3: isize;                   // in scope 0 at $DIR/match_false_edges.rs:38:9: 38:16
8     let mut _4: isize;                   // in scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
9     let mut _5: &std::option::Option<i32>; // in scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
10     let _6: i32;                         // in scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
11     let _7: &i32;                        // in scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
12     let mut _8: bool;                    // in scope 0 at $DIR/match_false_edges.rs:36:21: 36:28
13     let _9: std::option::Option<i32>;    // in scope 0 at $DIR/match_false_edges.rs:37:9: 37:11
14     let _10: i32;                        // in scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
15     let _11: &i32;                       // in scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
16     let mut _12: bool;                   // in scope 0 at $DIR/match_false_edges.rs:38:20: 38:29
17     let mut _13: i32;                    // in scope 0 at $DIR/match_false_edges.rs:38:27: 38:28
18     let _14: std::option::Option<i32>;   // in scope 0 at $DIR/match_false_edges.rs:39:9: 39:11
19     scope 1 {
20     }
21     scope 2 {
22         debug _w => _6;                  // in scope 2 at $DIR/match_false_edges.rs:36:14: 36:16
23         debug _w => _7;                  // in scope 2 at $DIR/match_false_edges.rs:36:14: 36:16
24     }
25     scope 3 {
26         debug _x => _9;                  // in scope 3 at $DIR/match_false_edges.rs:37:9: 37:11
27     }
28     scope 4 {
29         debug y => _10;                  // in scope 4 at $DIR/match_false_edges.rs:38:14: 38:15
30         debug y => _11;                  // in scope 4 at $DIR/match_false_edges.rs:38:14: 38:15
31     }
32     scope 5 {
33         debug _z => _14;                 // in scope 5 at $DIR/match_false_edges.rs:39:9: 39:11
34     }
35
36     bb0: {
37         StorageLive(_1);                 // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
38         StorageLive(_2);                 // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
39         _2 = Option::<i32>::Some(const 1_i32); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
40         FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
41         _4 = discriminant(_2);           // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
42         switchInt(move _4) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
43     }
44
45     bb1: {
46         falseEdge -> [real: bb9, imaginary: bb4]; // scope 0 at $DIR/match_false_edges.rs:37:9: 37:11
47     }
48
49     bb2: {
50         falseEdge -> [real: bb5, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
51     }
52
53     bb3: {
54         StorageLive(_14);                // scope 0 at $DIR/match_false_edges.rs:39:9: 39:11
55         _14 = _2;                        // scope 0 at $DIR/match_false_edges.rs:39:9: 39:11
56         _1 = const 4_i32;                // scope 5 at $DIR/match_false_edges.rs:39:15: 39:16
57         StorageDead(_14);                // scope 0 at $DIR/match_false_edges.rs:39:15: 39:16
58         goto -> bb14;                    // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
59     }
60
61     bb4: {
62         falseEdge -> [real: bb10, imaginary: bb3]; // scope 0 at $DIR/match_false_edges.rs:38:9: 38:16
63     }
64
65     bb5: {
66         StorageLive(_7);                 // scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
67         _7 = &((_2 as Some).0: i32);     // scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
68         _5 = &shallow _2;                // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
69         StorageLive(_8);                 // scope 0 at $DIR/match_false_edges.rs:36:21: 36:28
70         _8 = guard() -> [return: bb6, unwind: bb15]; // scope 0 at $DIR/match_false_edges.rs:36:21: 36:28
71                                          // mir::Constant
72                                          // + span: $DIR/match_false_edges.rs:36:21: 36:26
73                                          // + literal: Const { ty: fn() -> bool {guard}, val: Value(Scalar(<ZST>)) }
74     }
75
76     bb6: {
77         switchInt(move _8) -> [false: bb8, otherwise: bb7]; // scope 0 at $DIR/match_false_edges.rs:36:21: 36:28
78     }
79
80     bb7: {
81         StorageDead(_8);                 // scope 0 at $DIR/match_false_edges.rs:36:32: 36:33
82         FakeRead(ForMatchGuard, _5);     // scope 0 at $DIR/match_false_edges.rs:36:27: 36:28
83         FakeRead(ForGuardBinding, _7);   // scope 0 at $DIR/match_false_edges.rs:36:27: 36:28
84         StorageLive(_6);                 // scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
85         _6 = ((_2 as Some).0: i32);      // scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
86         _1 = const 1_i32;                // scope 2 at $DIR/match_false_edges.rs:36:32: 36:33
87         StorageDead(_6);                 // scope 0 at $DIR/match_false_edges.rs:36:32: 36:33
88         StorageDead(_7);                 // scope 0 at $DIR/match_false_edges.rs:36:32: 36:33
89         goto -> bb14;                    // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
90     }
91
92     bb8: {
93         StorageDead(_8);                 // scope 0 at $DIR/match_false_edges.rs:36:32: 36:33
94         StorageDead(_7);                 // scope 0 at $DIR/match_false_edges.rs:36:32: 36:33
95         falseEdge -> [real: bb1, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:36:21: 36:28
96     }
97
98     bb9: {
99         StorageLive(_9);                 // scope 0 at $DIR/match_false_edges.rs:37:9: 37:11
100         _9 = _2;                         // scope 0 at $DIR/match_false_edges.rs:37:9: 37:11
101         _1 = const 2_i32;                // scope 3 at $DIR/match_false_edges.rs:37:15: 37:16
102         StorageDead(_9);                 // scope 0 at $DIR/match_false_edges.rs:37:15: 37:16
103         goto -> bb14;                    // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
104     }
105
106     bb10: {
107         StorageLive(_11);                // scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
108         _11 = &((_2 as Some).0: i32);    // scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
109         _5 = &shallow _2;                // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
110         StorageLive(_12);                // scope 0 at $DIR/match_false_edges.rs:38:20: 38:29
111         StorageLive(_13);                // scope 0 at $DIR/match_false_edges.rs:38:27: 38:28
112         _13 = (*_11);                    // scope 0 at $DIR/match_false_edges.rs:38:27: 38:28
113         _12 = guard2(move _13) -> [return: bb11, unwind: bb15]; // scope 0 at $DIR/match_false_edges.rs:38:20: 38:29
114                                          // mir::Constant
115                                          // + span: $DIR/match_false_edges.rs:38:20: 38:26
116                                          // + literal: Const { ty: fn(i32) -> bool {guard2}, val: Value(Scalar(<ZST>)) }
117     }
118
119     bb11: {
120         StorageDead(_13);                // scope 0 at $DIR/match_false_edges.rs:38:28: 38:29
121         switchInt(move _12) -> [false: bb13, otherwise: bb12]; // scope 0 at $DIR/match_false_edges.rs:38:20: 38:29
122     }
123
124     bb12: {
125         StorageDead(_12);                // scope 0 at $DIR/match_false_edges.rs:38:33: 38:34
126         FakeRead(ForMatchGuard, _5);     // scope 0 at $DIR/match_false_edges.rs:38:28: 38:29
127         FakeRead(ForGuardBinding, _11);  // scope 0 at $DIR/match_false_edges.rs:38:28: 38:29
128         StorageLive(_10);                // scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
129         _10 = ((_2 as Some).0: i32);     // scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
130         _1 = const 3_i32;                // scope 4 at $DIR/match_false_edges.rs:38:33: 38:34
131         StorageDead(_10);                // scope 0 at $DIR/match_false_edges.rs:38:33: 38:34
132         StorageDead(_11);                // scope 0 at $DIR/match_false_edges.rs:38:33: 38:34
133         goto -> bb14;                    // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
134     }
135
136     bb13: {
137         StorageDead(_12);                // scope 0 at $DIR/match_false_edges.rs:38:33: 38:34
138         StorageDead(_11);                // scope 0 at $DIR/match_false_edges.rs:38:33: 38:34
139         falseEdge -> [real: bb3, imaginary: bb3]; // scope 0 at $DIR/match_false_edges.rs:38:20: 38:29
140     }
141
142     bb14: {
143         StorageDead(_2);                 // scope 0 at $DIR/match_false_edges.rs:40:6: 40:7
144         StorageDead(_1);                 // scope 0 at $DIR/match_false_edges.rs:40:6: 40:7
145         _0 = const ();                   // scope 0 at $DIR/match_false_edges.rs:34:11: 41:2
146         return;                          // scope 0 at $DIR/match_false_edges.rs:41:2: 41:2
147     }
148
149     bb15 (cleanup): {
150         resume;                          // scope 0 at $DIR/match_false_edges.rs:34:1: 41:2
151     }
152 }