]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/simplify_try.rs
Rollup merge of #67005 - andrewbanchich:master, r=joshtriplett
[rust.git] / src / test / mir-opt / simplify_try.rs
1 fn try_identity(x: Result<u32, i32>) -> Result<u32, i32> {
2     let y = x?;
3     Ok(y)
4 }
5
6 fn main() {
7     let _ = try_identity(Ok(0));
8 }
9
10 // END RUST SOURCE
11 // START rustc.try_identity.SimplifyArmIdentity.before.mir
12 // fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i32> {
13 //     debug x => _1;
14 //     let mut _0: std::result::Result<u32, i32>;
15 //     let _2: u32;
16 //     let mut _3: std::result::Result<u32, i32>;
17 //     let mut _4: std::result::Result<u32, i32>;
18 //     let mut _5: isize;
19 //     let _6: i32;
20 //     let mut _7: !;
21 //     let mut _8: i32;
22 //     let mut _9: i32;
23 //     let _10: u32;
24 //     let mut _11: u32;
25 //     scope 1 {
26 //         debug y => _10;
27 //     }
28 //     scope 2 {
29 //         debug err => _6;
30 //         scope 3 {
31 //             scope 7 {
32 //                 debug t => _6;
33 //             }
34 //             scope 8 {
35 //                 debug v => _6;
36 //                 let mut _12: i32;
37 //             }
38 //         }
39 //     }
40 //     scope 4 {
41 //         debug val => _10;
42 //         scope 5 {
43 //         }
44 //     }
45 //     scope 6 {
46 //         debug self => _1;
47 //     }
48 //     bb0: {
49 //         _5 = discriminant(_1);
50 //         switchInt(move _5) -> [0isize: bb4, 1isize: bb2, otherwise: bb1];
51 //     }
52 //     bb1: {
53 //         unreachable;
54 //     }
55 //     bb2: {
56 //         _6 = ((_1 as Err).0: i32);
57 //         ((_0 as Err).0: i32) = move _6;
58 //         discriminant(_0) = 1;
59 //         goto -> bb3;
60 //     }
61 //     bb3: {
62 //         return;
63 //     }
64 //     bb4: {
65 //         _10 = ((_1 as Ok).0: u32);
66 //         ((_0 as Ok).0: u32) = move _10;
67 //         discriminant(_0) = 0;
68 //         goto -> bb3;
69 //     }
70 // }
71 // END rustc.try_identity.SimplifyArmIdentity.before.mir
72
73 // START rustc.try_identity.SimplifyArmIdentity.after.mir
74 // fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i32> {
75 //     debug x => _1;
76 //     let mut _0: std::result::Result<u32, i32>;
77 //     let _2: u32;
78 //     let mut _3: std::result::Result<u32, i32>;
79 //     let mut _4: std::result::Result<u32, i32>;
80 //     let mut _5: isize;
81 //     let _6: i32;
82 //     let mut _7: !;
83 //     let mut _8: i32;
84 //     let mut _9: i32;
85 //     let _10: u32;
86 //     let mut _11: u32;
87 //     scope 1 {
88 //         debug y => _10;
89 //     }
90 //     scope 2 {
91 //         debug err => _6;
92 //         scope 3 {
93 //             scope 7 {
94 //                 debug t => _6;
95 //             }
96 //             scope 8 {
97 //                 debug v => _6;
98 //                 let mut _12: i32;
99 //             }
100 //         }
101 //     }
102 //     scope 4 {
103 //         debug val => _10;
104 //         scope 5 {
105 //         }
106 //     }
107 //     scope 6 {
108 //         debug self => _1;
109 //     }
110 //     bb0: {
111 //         _5 = discriminant(_1);
112 //         switchInt(move _5) -> [0isize: bb4, 1isize: bb2, otherwise: bb1];
113 //     }
114 //     bb1: {
115 //         unreachable;
116 //     }
117 //     bb2: {
118 //         _0 = move _1;
119 //         nop;
120 //         nop;
121 //         goto -> bb3;
122 //     }
123 //     bb3: {
124 //         return;
125 //     }
126 //     bb4: {
127 //         _0 = move _1;
128 //         nop;
129 //         nop;
130 //         goto -> bb3;
131 //     }
132 // }
133 // END rustc.try_identity.SimplifyArmIdentity.after.mir
134
135 // START rustc.try_identity.SimplifyBranchSame.after.mir
136 // fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i32> {
137 //     debug x => _1;
138 //     let mut _0: std::result::Result<u32, i32>;
139 //     let _2: u32;
140 //     let mut _3: std::result::Result<u32, i32>;
141 //     let mut _4: std::result::Result<u32, i32>;
142 //     let mut _5: isize;
143 //     let _6: i32;
144 //     let mut _7: !;
145 //     let mut _8: i32;
146 //     let mut _9: i32;
147 //     let _10: u32;
148 //     let mut _11: u32;
149 //     scope 1 {
150 //         debug y => _10;
151 //     }
152 //     scope 2 {
153 //         debug err => _6;
154 //         scope 3 {
155 //             scope 7 {
156 //                 debug t => _6;
157 //             }
158 //             scope 8 {
159 //                 debug v => _6;
160 //                 let mut _12: i32;
161 //             }
162 //         }
163 //     }
164 //     scope 4 {
165 //         debug val => _10;
166 //         scope 5 {
167 //         }
168 //     }
169 //     scope 6 {
170 //         debug self => _1;
171 //     }
172 //     bb0: {
173 //         _5 = discriminant(_1);
174 //         goto -> bb2;
175 //     }
176 //     bb1: {
177 //         return;
178 //     }
179 //     bb2: {
180 //         _0 = move _1;
181 //         nop;
182 //         nop;
183 //         goto -> bb1;
184 //     }
185 // }
186 // END rustc.try_identity.SimplifyBranchSame.after.mir
187
188 // START rustc.try_identity.SimplifyLocals.after.mir
189 // fn try_identity(_1: std::result::Result<u32, i32>) -> std::result::Result<u32, i32> {
190 //     debug x => _1;
191 //     let mut _0: std::result::Result<u32, i32>;
192 //     let mut _2: isize;
193 //     let _3: i32;
194 //     let _4: u32;
195 //     scope 1 {
196 //         debug y => _4;
197 //     }
198 //     scope 2 {
199 //         debug err => _3;
200 //         scope 3 {
201 //             scope 7 {
202 //                 debug t => _3;
203 //             }
204 //             scope 8 {
205 //                 debug v => _3;
206 //             }
207 //         }
208 //     }
209 //     scope 4 {
210 //         debug val => _4;
211 //         scope 5 {
212 //         }
213 //     }
214 //     scope 6 {
215 //         debug self => _1;
216 //     }
217 //     bb0: {
218 //         _2 = discriminant(_1);
219 //         _0 = move _1;
220 //         return;
221 //     }
222 // }
223 // END rustc.try_identity.SimplifyLocals.after.mir