rust/tests/mir-opt/gvn.transmute_then_cast_poi...

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;
}
}