]> git.proxmox.com Git - rustc.git/blob - src/test/mir-opt/packed-struct-drop-aligned.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / src / test / mir-opt / packed-struct-drop-aligned.rs
1 // ignore-wasm32-bare compiled with panic=abort by default
2
3 fn main() {
4 let mut x = Packed(Aligned(Droppy(0)));
5 x.0 = Aligned(Droppy(0));
6 }
7
8 struct Aligned(Droppy);
9 #[repr(packed)]
10 struct Packed(Aligned);
11
12 struct Droppy(usize);
13 impl Drop for Droppy {
14 fn drop(&mut self) {}
15 }
16
17 // END RUST SOURCE
18 // START rustc.main.EraseRegions.before.mir
19 // fn main() -> () {
20 // let mut _0: ();
21 // let mut _1: Packed;
22 // let mut _2: Aligned;
23 // let mut _3: Droppy;
24 // let mut _4: Aligned;
25 // let mut _5: Droppy;
26 // let mut _6: Aligned;
27 // scope 1 {
28 // debug x => _1;
29 // }
30 //
31 // bb0: {
32 // StorageLive(_1);
33 // ...
34 // _1 = Packed(move _2,);
35 // ...
36 // StorageLive(_6);
37 // _6 = move (_1.0: Aligned);
38 // drop(_6) -> [return: bb4, unwind: bb3];
39 // }
40 // bb1 (cleanup): {
41 // resume;
42 // }
43 // bb2: {
44 // StorageDead(_1);
45 // return;
46 // }
47 // bb3 (cleanup): {
48 // (_1.0: Aligned) = move _4;
49 // drop(_1) -> bb1;
50 // }
51 // bb4: {
52 // StorageDead(_6);
53 // (_1.0: Aligned) = move _4;
54 // StorageDead(_4);
55 // _0 = ();
56 // drop(_1) -> [return: bb2, unwind: bb1];
57 // }
58 // }
59 // END rustc.main.EraseRegions.before.mir