- // MIR for `constant_index_overflow` before GVN | |
+ // MIR for `constant_index_overflow` after GVN | |
fn constant_index_overflow(_1: &[T]) -> () { | |
debug x => _1; | |
let mut _0: (); | |
let _2: usize; | |
let mut _4: bool; | |
let mut _5: usize; | |
let mut _6: usize; | |
let mut _7: &[T]; | |
let _8: usize; | |
let mut _9: usize; | |
let mut _10: bool; | |
let _11: usize; | |
let mut _12: usize; | |
let mut _13: bool; | |
let mut _14: T; | |
scope 1 { | |
debug a => _2; | |
let _3: T; | |
scope 2 { | |
debug b => _3; | |
} | |
} | |
bb0: { | |
- StorageLive(_2); | |
- _2 = const core::num::<impl u64>::MAX as usize (IntToInt); | |
+ nop; | |
+ _2 = const usize::MAX; | |
StorageLive(_3); | |
StorageLive(_4); | |
StorageLive(_5); | |
- _5 = _2; | |
+ _5 = const usize::MAX; | |
StorageLive(_6); | |
StorageLive(_7); | |
_7 = &(*_1); | |
_6 = core::slice::<impl [T]>::len(move _7) -> [return: bb1, unwind continue]; | |
} | |
bb1: { | |
StorageDead(_7); | |
- _4 = Lt(move _5, move _6); | |
+ _4 = Lt(const usize::MAX, move _6); | |
switchInt(move _4) -> [0: bb4, otherwise: bb2]; | |
} | |
bb2: { | |
StorageDead(_6); | |
StorageDead(_5); | |
StorageLive(_8); | |
- _8 = _2; | |
+ _8 = const usize::MAX; | |
_9 = Len((*_1)); | |
- _10 = Lt(_8, _9); | |
- assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind continue]; | |
+ _10 = Lt(const usize::MAX, _9); | |
+ assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, const usize::MAX) -> [success: bb3, unwind continue]; | |
} | |
bb3: { | |
- _3 = (*_1)[_8]; | |
+ _3 = (*_1)[_2]; | |
StorageDead(_8); | |
goto -> bb6; | |
} | |
bb4: { | |
StorageDead(_6); | |
StorageDead(_5); | |
StorageLive(_11); | |
_11 = const 0_usize; | |
_12 = Len((*_1)); | |
- _13 = Lt(_11, _12); | |
- assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind continue]; | |
+ _13 = Lt(const 0_usize, _12); | |
+ assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, const 0_usize) -> [success: bb5, unwind continue]; | |
} | |
bb5: { | |
- _3 = (*_1)[_11]; | |
+ _3 = (*_1)[0 of 1]; | |
StorageDead(_11); | |
goto -> bb6; | |
} | |
bb6: { | |
StorageDead(_4); | |
StorageLive(_14); | |
_14 = _3; | |
_0 = opaque::<T>(move _14) -> [return: bb7, unwind continue]; | |
} | |
bb7: { | |
StorageDead(_14); | |
StorageDead(_3); | |
- StorageDead(_2); | |
+ nop; | |
return; | |
} | |
} | |