]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/issue-41110.rs
Render const pointers in MIR more compactly
[rust.git] / src / test / mir-opt / issue-41110.rs
1 // ignore-wasm32-bare compiled with panic=abort by default
2
3 // check that we don't emit multiple drop flags when they are not needed.
4
5 fn main() {
6     let x = S.other(S.id());
7 }
8
9 // no_mangle to make sure this gets instantiated even in an executable.
10 #[no_mangle]
11 pub fn test() {
12     let u = S;
13     let mut v = S;
14     drop(v);
15     v = u;
16 }
17
18 struct S;
19 impl Drop for S {
20     fn drop(&mut self) {
21     }
22 }
23
24 impl S {
25     fn id(self) -> Self { self }
26     fn other(self, s: Self) {}
27 }
28
29 // END RUST SOURCE
30 // START rustc.main.ElaborateDrops.after.mir
31 //    let mut _0: ();
32 //    let _1: ();
33 //    let mut _2: S;
34 //    let mut _3: S;
35 //    let mut _4: S;
36 //    let mut _5: bool;
37 //    scope 1 {
38 //        debug x => _1;
39 //    }
40 //    ...
41 //    bb0: {
42 // END rustc.main.ElaborateDrops.after.mir
43 // START rustc.test.ElaborateDrops.after.mir
44 //    let mut _0: ();
45 //    let _1: S;
46 //    let _3: ();
47 //    let mut _4: S;
48 //    let mut _5: S;
49 //    let mut _6: bool;
50 //    ...
51 //    debug u => _1;
52 //    ...
53 //    let mut _2: S;
54 //    ...
55 //    debug v => _2;
56 //    ...
57 //    bb0: {
58 // END rustc.test.ElaborateDrops.after.mir