]> git.lizzy.rs Git - rust.git/blob - tests/mir-opt/address_of.rs
Rollup merge of #106928 - bvanjoi:print-keyword-raw-identifier, r=petrochenkov
[rust.git] / tests / mir-opt / address_of.rs
1 // EMIT_MIR address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
2
3 fn address_of_reborrow() {
4     let y = &[0; 10];
5     let mut z = &mut [0; 10];
6
7     y as *const _;
8     y as *const [i32; 10];
9     y as *const dyn Send;
10     y as *const [i32];
11     y as *const i32;            // This is a cast, not a coercion
12
13     let p: *const _ = y;
14     let p: *const [i32; 10] = y;
15     let p: *const dyn Send = y;
16     let p: *const [i32] = y;
17
18     z as *const _;
19     z as *const [i32; 10];
20     z as *const dyn Send;
21     z as *const [i32];
22
23     let p: *const _ = z;
24     let p: *const [i32; 10] = z;
25     let p: *const dyn Send = z;
26     let p: *const [i32] = z;
27
28     z as *mut _;
29     z as *mut [i32; 10];
30     z as *mut dyn Send;
31     z as *mut [i32];
32
33     let p: *mut _ = z;
34     let p: *mut [i32; 10] = z;
35     let p: *mut dyn Send = z;
36     let p: *mut [i32] = z;
37 }
38
39 // The normal borrows here should be preserved
40 // EMIT_MIR address_of.borrow_and_cast.SimplifyCfg-initial.after.mir
41 fn borrow_and_cast(mut x: i32) {
42     let p = &x as *const i32;
43     let q = &mut x as *const i32;
44     let r = &mut x as *mut i32;
45 }
46
47 fn main() {}