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.
48 lines
1.3 KiB
Diff
48 lines
1.3 KiB
Diff
- // MIR for `main` before ConstProp
|
|
+ // MIR for `main` after ConstProp
|
|
|
|
fn main() -> () {
|
|
let mut _0: ();
|
|
let _1: u32;
|
|
let mut _2: &[u32];
|
|
let mut _3: &[u32; 3];
|
|
let _4: &[u32; 3];
|
|
let _5: [u32; 3];
|
|
let _6: usize;
|
|
let mut _7: usize;
|
|
let mut _8: bool;
|
|
let mut _9: &[u32; 3];
|
|
|
|
bb0: {
|
|
StorageLive(_1);
|
|
StorageLive(_2);
|
|
StorageLive(_3);
|
|
StorageLive(_4);
|
|
_9 = const _;
|
|
_4 = _9;
|
|
_3 = _4;
|
|
_2 = move _3 as &[u32] (PointerCoercion(Unsize));
|
|
StorageDead(_3);
|
|
StorageLive(_6);
|
|
_6 = const 1_usize;
|
|
- _7 = Len((*_2));
|
|
- _8 = Lt(_6, _7);
|
|
- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
|
|
+ _7 = const 3_usize;
|
|
+ _8 = const true;
|
|
+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
|
|
}
|
|
|
|
bb1: {
|
|
- _1 = (*_2)[_6];
|
|
+ _1 = const 2_u32;
|
|
StorageDead(_6);
|
|
StorageDead(_4);
|
|
StorageDead(_2);
|
|
StorageDead(_1);
|
|
_0 = const ();
|
|
return;
|
|
}
|
|
}
|
|
|