mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 16:54:01 +00:00
2beabbbf6f
It makes it sound like the `ExprKind` and `Rvalue` are supposed to represent all pointer related casts, when in reality their just used to share a some enum variants. Make it clear there these are only coercion to make it clear why only some pointer related "casts" are in the enum.
51 lines
1.1 KiB
Diff
51 lines
1.1 KiB
Diff
- // MIR for `array_len_raw` before NormalizeArrayLen
|
|
+ // MIR for `array_len_raw` after NormalizeArrayLen
|
|
|
|
fn array_len_raw(_1: [u8; N]) -> usize {
|
|
debug arr => _1;
|
|
let mut _0: usize;
|
|
let _2: &[u8];
|
|
let mut _3: &[u8; N];
|
|
let _4: &[u8; N];
|
|
let mut _6: &[u8];
|
|
let _7: &[u8];
|
|
scope 1 {
|
|
debug arr => _2;
|
|
let _5: *const [u8];
|
|
scope 2 {
|
|
debug arr => _5;
|
|
scope 3 {
|
|
}
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_2);
|
|
StorageLive(_3);
|
|
StorageLive(_4);
|
|
_4 = &_1;
|
|
_3 = &(*_4);
|
|
_2 = move _3 as &[u8] (PointerCoercion(Unsize));
|
|
StorageDead(_3);
|
|
StorageDead(_4);
|
|
StorageLive(_5);
|
|
_5 = &raw const (*_2);
|
|
StorageLive(_6);
|
|
StorageLive(_7);
|
|
_7 = &(*_5);
|
|
_6 = &(*_7);
|
|
- _0 = Len((*_6));
|
|
+ _0 = const N;
|
|
goto -> bb1;
|
|
}
|
|
|
|
bb1: {
|
|
StorageDead(_6);
|
|
StorageDead(_5);
|
|
StorageDead(_2);
|
|
StorageDead(_7);
|
|
return;
|
|
}
|
|
}
|
|
|