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.
55 lines
1.3 KiB
Diff
55 lines
1.3 KiB
Diff
- // MIR for `test` before SimplifyComparisonIntegral
|
|
+ // MIR for `test` after SimplifyComparisonIntegral
|
|
|
|
fn test(_1: T) -> () {
|
|
debug x => _1;
|
|
let mut _0: ();
|
|
let _2: &[T];
|
|
let mut _3: &[T; 3];
|
|
let _4: &[T; 3];
|
|
let _5: [T; 3];
|
|
let mut _6: T;
|
|
let mut _7: T;
|
|
let mut _8: T;
|
|
let mut _9: usize;
|
|
let mut _10: usize;
|
|
let mut _11: bool;
|
|
let mut _15: !;
|
|
scope 1 {
|
|
debug v => _2;
|
|
let _12: &T;
|
|
let _13: &T;
|
|
let _14: &T;
|
|
scope 2 {
|
|
debug v1 => &(*_2)[0 of 3];
|
|
debug v2 => &(*_2)[1 of 3];
|
|
debug v3 => &(*_2)[2 of 3];
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_2);
|
|
StorageLive(_5);
|
|
_5 = [_1, _1, _1];
|
|
_4 = &_5;
|
|
_2 = _4 as &[T] (PointerCoercion(Unsize));
|
|
_9 = Len((*_2));
|
|
_10 = const 3_usize;
|
|
- _11 = Eq(move _9, const 3_usize);
|
|
- switchInt(move _11) -> [0: bb1, otherwise: bb2];
|
|
+ nop;
|
|
+ switchInt(move _9) -> [3: bb2, otherwise: bb1];
|
|
}
|
|
|
|
bb1: {
|
|
_15 = core::panicking::panic(const "internal error: entered unreachable code") -> unwind continue;
|
|
}
|
|
|
|
bb2: {
|
|
StorageDead(_5);
|
|
StorageDead(_2);
|
|
return;
|
|
}
|
|
}
|
|
|