- // MIR for `array_bound` before NormalizeArrayLen + // MIR for `array_bound` after NormalizeArrayLen fn array_bound(_1: usize, _2: &[u8; N]) -> u8 { debug index => _1; debug slice => _2; let mut _0: u8; let mut _3: bool; let mut _4: usize; let mut _5: usize; let mut _6: &[u8]; let mut _7: &[u8; N]; let _8: usize; let mut _9: usize; let mut _10: bool; bb0: { StorageLive(_3); StorageLive(_4); _4 = _1; StorageLive(_5); StorageLive(_6); StorageLive(_7); _7 = &(*_2); _6 = move _7 as &[u8] (PointerCoercion(Unsize)); StorageDead(_7); - _5 = Len((*_6)); + _5 = const N; goto -> bb1; } bb1: { StorageDead(_6); _3 = Lt(move _4, move _5); StorageDead(_5); StorageDead(_4); switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { StorageLive(_8); _8 = _1; _9 = Len((*_2)); _10 = Lt(_8, _9); assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable]; } bb3: { _0 = (*_2)[_8]; StorageDead(_8); goto -> bb5; } bb4: { _0 = const 42_u8; goto -> bb5; } bb5: { StorageDead(_3); return; } }