- // MIR for `foo` before GVN + // MIR for `foo` after GVN fn foo(_1: u8) -> () { debug x => _1; let mut _0: (); let _2: i32; let mut _3: i32; let mut _4: (i32, u8); let mut _5: u8; let mut _7: i32; let mut _8: (u8, i32); let mut _9: u8; scope 1 { debug first => _2; let _6: i32; scope 2 { debug second => _6; } } bb0: { StorageLive(_2); StorageLive(_3); StorageLive(_4); StorageLive(_5); _5 = _1; - _4 = (const 0_i32, move _5); + _4 = (const 0_i32, _1); StorageDead(_5); - _3 = (_4.0: i32); - _2 = Add(move _3, const 1_i32); + _3 = const 0_i32; + _2 = const 1_i32; StorageDead(_3); StorageDead(_4); StorageLive(_6); StorageLive(_7); StorageLive(_8); StorageLive(_9); _9 = _1; - _8 = (move _9, const 1_i32); + _8 = (_1, const 1_i32); StorageDead(_9); - _7 = (_8.1: i32); - _6 = Add(move _7, const 2_i32); + _7 = const 1_i32; + _6 = const 3_i32; StorageDead(_7); StorageDead(_8); _0 = const (); StorageDead(_6); StorageDead(_2); return; } }