]> git.proxmox.com Git - rustc.git/blob - src/test/mir-opt/end_region_4.rs
New upstream version 1.22.1+dfsg1
[rustc.git] / src / test / mir-opt / end_region_4.rs
1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // compile-flags: -Z identify_regions -Z emit-end-regions
12 // ignore-tidy-linelength
13
14 // Unwinding should EndRegion for in-scope borrows: Direct borrows.
15
16 fn main() {
17 let d = D(0);
18 let a = 0;
19 let b = &a;
20 foo(*b);
21 let c = &a;
22 }
23
24 struct D(i32);
25 impl Drop for D { fn drop(&mut self) { println!("dropping D({})", self.0); } }
26
27 fn foo(i: i32) {
28 if i > 0 { panic!("im positive"); }
29 }
30
31 // END RUST SOURCE
32 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
33 // let mut _0: ();
34 // let _1: D;
35 // let _2: i32;
36 // let _3: &'26_2rs i32;
37 // let _6: &'26_4rs i32;
38 // let mut _4: ();
39 // let mut _5: i32;
40 // bb0: {
41 // StorageLive(_1);
42 // _1 = D::{{constructor}}(const 0i32,);
43 // StorageLive(_2);
44 // _2 = const 0i32;
45 // StorageLive(_3);
46 // _3 = &'26_2rs _2;
47 // StorageLive(_5);
48 // _5 = (*_3);
49 // _4 = const foo(_5) -> [return: bb1, unwind: bb3];
50 // }
51 // bb1: {
52 // StorageDead(_5);
53 // StorageLive(_6);
54 // _6 = &'26_4rs _2;
55 // _0 = ();
56 // EndRegion('26_4rs);
57 // StorageDead(_6);
58 // EndRegion('26_2rs);
59 // StorageDead(_3);
60 // StorageDead(_2);
61 // drop(_1) -> bb4;
62 // }
63 // bb2: {
64 // resume;
65 // }
66 // bb3: {
67 // EndRegion('26_2rs);
68 // drop(_1) -> bb2;
69 // }
70 // bb4: {
71 // StorageDead(_1);
72 // return;
73 // }
74 // END rustc.node4.SimplifyCfg-qualify-consts.after.mir