mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
4630d1b23b
Apparently MIR borrowck cares about at least one of these for checking variance. In runtime MIR, though, there's no need for them as `PtrToPtr` does the same thing. (Banning them simplifies passes like GVN that no longer need to handle multiple cast possibilities.)
27 lines
668 B
Diff
27 lines
668 B
Diff
- // MIR for `roundtrip` before InstSimplify
|
|
+ // MIR for `roundtrip` after InstSimplify
|
|
|
|
fn roundtrip(_1: *const u8) -> *const u8 {
|
|
debug x => _1;
|
|
let mut _0: *const u8;
|
|
let mut _2: *const u8;
|
|
let mut _3: *mut u8;
|
|
let mut _4: *const u8;
|
|
|
|
bb0: {
|
|
StorageLive(_2);
|
|
StorageLive(_3);
|
|
StorageLive(_4);
|
|
_4 = _1;
|
|
_3 = move _4 as *mut u8 (PtrToPtr);
|
|
_2 = move _3 as *const u8 (PtrToPtr);
|
|
StorageDead(_4);
|
|
StorageDead(_3);
|
|
- _0 = move _2 as *const u8 (PtrToPtr);
|
|
+ _0 = move _2;
|
|
StorageDead(_2);
|
|
return;
|
|
}
|
|
}
|
|
|