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