- // MIR for `main` before GVN + // MIR for `main` after GVN fn main() -> () { let mut _0: (); let _1: u32; let mut _2: [u32; 4]; let _3: usize; let mut _4: usize; let mut _5: 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 = Len(_2); - _5 = Lt(copy _3, copy _4); - assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable]; + _4 = const 4_usize; + _5 = 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 = const 2_u32; StorageDead(_3); StorageDead(_2); _0 = const (); StorageDead(_1); return; } }