]> git.proxmox.com Git - rustc.git/blob - src/test/mir-opt/simplify_try.rs
New upstream version 1.41.1+dfsg1
[rustc.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