- // MIR for `main` before ConstProp + // MIR for `main` after ConstProp fn main() -> () { let mut _0: (); let _1: *const [i32]; let mut _2: *const [i32; 3]; let _3: &[i32; 3]; let _4: [i32; 3]; let _6: usize; let mut _7: usize; let mut _8: bool; let mut _9: &[i32; 3]; scope 1 { debug a => _1; scope 2 { let _5: i32; scope 3 { debug _b => _5; } } } bb0: { StorageLive(_1); StorageLive(_2); StorageLive(_3); _9 = const _; _3 = &(*_9); _2 = &raw const (*_3); _1 = move _2 as *const [i32] (PointerCoercion(Unsize)); StorageDead(_2); StorageDead(_3); StorageLive(_5); StorageLive(_6); _6 = const 3_usize; _7 = const 3_usize; - _8 = Lt(_6, _7); - assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue]; + _8 = const false; + assert(const false, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 3_usize) -> [success: bb1, unwind continue]; } bb1: { - _5 = (*_1)[_6]; + _5 = (*_1)[3 of 4]; StorageDead(_6); _0 = const (); StorageDead(_5); StorageDead(_1); return; } }