- // MIR for `repeated_index` before GVN + // MIR for `repeated_index` after GVN fn repeated_index(_1: T, _2: usize) -> () { debug x => _1; debug idx => _2; let mut _0: (); let _3: [T; N]; let mut _4: T; let _5: (); let mut _6: T; let _7: usize; let mut _8: usize; let mut _9: bool; let _10: (); let mut _11: T; let _12: usize; let mut _13: usize; let mut _14: bool; scope 1 { debug a => _3; } bb0: { StorageLive(_3); - StorageLive(_4); - _4 = _1; - _3 = [move _4; N]; - StorageDead(_4); + _3 = [_1; N]; StorageLive(_5); StorageLive(_6); StorageLive(_7); _7 = const 0_usize; _8 = Len(_3); - _9 = Lt(_7, _8); - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb1, unwind continue]; + _9 = Lt(const 0_usize, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", _8, const 0_usize) -> [success: bb1, unwind continue]; } bb1: { _6 = _3[_7]; _5 = opaque::(move _6) -> [return: bb2, unwind continue]; } bb2: { StorageDead(_6); StorageDead(_7); StorageDead(_5); StorageLive(_10); StorageLive(_11); StorageLive(_12); _12 = _2; - _13 = Len(_3); - _14 = Lt(_12, _13); - assert(move _14, "index out of bounds: the length is {} but the index is {}", move _13, _12) -> [success: bb3, unwind continue]; + _14 = Lt(_2, _8); + assert(move _14, "index out of bounds: the length is {} but the index is {}", _8, _2) -> [success: bb3, unwind continue]; } bb3: { _11 = _3[_12]; _10 = opaque::(move _11) -> [return: bb4, unwind continue]; } bb4: { StorageDead(_11); StorageDead(_12); StorageDead(_10); _0 = const (); StorageDead(_3); return; } }