mirror of https://github.com/rust-lang/rust.git
116 lines
3.2 KiB
Diff
116 lines
3.2 KiB
Diff
- // MIR for `transmute_then_cast_pointer` before GVN
|
|
+ // MIR for `transmute_then_cast_pointer` after GVN
|
|
|
|
fn transmute_then_cast_pointer(_1: usize, _2: *mut [u8]) -> () {
|
|
debug addr => _1;
|
|
debug fat => _2;
|
|
let mut _0: ();
|
|
let _3: *mut u8;
|
|
let mut _4: usize;
|
|
let _5: ();
|
|
let mut _6: *const u8;
|
|
let mut _7: *mut u8;
|
|
let mut _9: &mut [i32];
|
|
let mut _10: &mut [i32; 3];
|
|
let mut _11: &mut [i32; 3];
|
|
let mut _12: [i32; 3];
|
|
let _13: ();
|
|
let mut _14: *const i32;
|
|
let mut _15: *const [i32];
|
|
let mut _17: *mut [u8];
|
|
let _18: ();
|
|
let mut _19: *const u8;
|
|
let mut _20: *const [u8];
|
|
scope 1 {
|
|
debug p => _3;
|
|
let _8: *const [i32];
|
|
scope 2 {
|
|
debug q => _8;
|
|
let _16: *const [u8];
|
|
scope 3 {
|
|
debug w => _16;
|
|
}
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
- StorageLive(_3);
|
|
+ nop;
|
|
StorageLive(_4);
|
|
_4 = copy _1;
|
|
- _3 = move _4 as *mut u8 (Transmute);
|
|
+ _3 = copy _1 as *mut u8 (Transmute);
|
|
StorageDead(_4);
|
|
StorageLive(_5);
|
|
StorageLive(_6);
|
|
StorageLive(_7);
|
|
_7 = copy _3;
|
|
- _6 = move _7 as *const u8 (PtrToPtr);
|
|
+ _6 = copy _1 as *const u8 (Transmute);
|
|
StorageDead(_7);
|
|
_5 = takes_const_ptr::<u8>(move _6) -> [return: bb1, unwind unreachable];
|
|
}
|
|
|
|
bb1: {
|
|
StorageDead(_6);
|
|
StorageDead(_5);
|
|
- StorageLive(_8);
|
|
+ nop;
|
|
StorageLive(_9);
|
|
StorageLive(_10);
|
|
StorageLive(_11);
|
|
StorageLive(_12);
|
|
_12 = [const 1_i32, const 2_i32, const 3_i32];
|
|
_11 = &mut _12;
|
|
_10 = &mut (*_11);
|
|
_9 = move _10 as &mut [i32] (PointerCoercion(Unsize, Implicit));
|
|
StorageDead(_10);
|
|
_8 = move _9 as *const [i32] (Transmute);
|
|
StorageDead(_9);
|
|
StorageDead(_12);
|
|
StorageDead(_11);
|
|
StorageLive(_13);
|
|
StorageLive(_14);
|
|
StorageLive(_15);
|
|
_15 = copy _8;
|
|
- _14 = move _15 as *const i32 (PtrToPtr);
|
|
+ _14 = copy _8 as *const i32 (PtrToPtr);
|
|
StorageDead(_15);
|
|
_13 = takes_const_ptr::<i32>(move _14) -> [return: bb2, unwind unreachable];
|
|
}
|
|
|
|
bb2: {
|
|
StorageDead(_14);
|
|
StorageDead(_13);
|
|
- StorageLive(_16);
|
|
+ nop;
|
|
StorageLive(_17);
|
|
_17 = copy _2;
|
|
- _16 = move _17 as *const [u8] (Transmute);
|
|
+ _16 = copy _2 as *const [u8] (PtrToPtr);
|
|
StorageDead(_17);
|
|
StorageLive(_18);
|
|
StorageLive(_19);
|
|
StorageLive(_20);
|
|
_20 = copy _16;
|
|
- _19 = move _20 as *const u8 (PtrToPtr);
|
|
+ _19 = copy _2 as *const u8 (PtrToPtr);
|
|
StorageDead(_20);
|
|
_18 = takes_const_ptr::<u8>(move _19) -> [return: bb3, unwind unreachable];
|
|
}
|
|
|
|
bb3: {
|
|
StorageDead(_19);
|
|
StorageDead(_18);
|
|
_0 = const ();
|
|
- StorageDead(_16);
|
|
- StorageDead(_8);
|
|
- StorageDead(_3);
|
|
+ nop;
|
|
+ nop;
|
|
+ nop;
|
|
return;
|
|
}
|
|
}
|
|
|