|  | - // MIR for `main` before DataflowConstProp | 
|  | + // MIR for `main` after DataflowConstProp | 
|  |  | 
|  | fn main() -> () { | 
|  | let mut _0: (); | 
|  | let _1: u32; | 
|  | let mut _2: [u32; 4]; | 
|  | let _3: usize; | 
|  | let mut _4: bool; | 
|  | scope 1 { | 
|  | debug x => _1; | 
|  | } | 
|  |  | 
|  | bb0: { | 
|  | StorageLive(_1); | 
|  | StorageLive(_2); | 
|  | _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; | 
|  | StorageLive(_3); | 
|  | _3 = const 2_usize; | 
|  | -         _4 = Lt(copy _3, const 4_usize); | 
|  | -         assert(move _4, "index out of bounds: the length is {} but the index is {}", const 4_usize, copy _3) -> [success: bb1, unwind unreachable]; | 
|  | +         _4 = const true; | 
|  | +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind unreachable]; | 
|  | } | 
|  |  | 
|  | bb1: { | 
|  | -         _1 = copy _2[_3]; | 
|  | +         _1 = copy _2[2 of 3]; | 
|  | StorageDead(_3); | 
|  | StorageDead(_2); | 
|  | _0 = const (); | 
|  | StorageDead(_1); | 
|  | return; | 
|  | } | 
|  | } | 
|  |  |