- // MIR for `comparison` before GVN + // MIR for `comparison` after GVN fn comparison(_1: u64, _2: u64) -> () { debug x => _1; debug y => _2; let mut _0: (); let _3: (); let mut _4: bool; let mut _5: u64; let mut _6: u64; let _7: (); let mut _8: bool; let mut _9: u64; let mut _10: u64; let _11: (); let mut _12: bool; let mut _13: u64; let mut _14: u64; let _15: (); let mut _16: bool; let mut _17: u64; let mut _18: u64; bb0: { StorageLive(_3); StorageLive(_4); StorageLive(_5); _5 = copy _1; StorageLive(_6); _6 = copy _1; - _4 = Eq(move _5, move _6); + _4 = const true; StorageDead(_6); StorageDead(_5); - _3 = opaque::(move _4) -> [return: bb1, unwind unreachable]; + _3 = opaque::(const true) -> [return: bb1, unwind unreachable]; } bb1: { StorageDead(_4); StorageDead(_3); StorageLive(_7); StorageLive(_8); StorageLive(_9); _9 = copy _1; StorageLive(_10); _10 = copy _1; - _8 = Ne(move _9, move _10); + _8 = const false; StorageDead(_10); StorageDead(_9); - _7 = opaque::(move _8) -> [return: bb2, unwind unreachable]; + _7 = opaque::(const false) -> [return: bb2, unwind unreachable]; } bb2: { StorageDead(_8); StorageDead(_7); StorageLive(_11); StorageLive(_12); StorageLive(_13); _13 = copy _1; StorageLive(_14); _14 = copy _2; - _12 = Eq(move _13, move _14); + _12 = Eq(copy _1, copy _2); StorageDead(_14); StorageDead(_13); _11 = opaque::(move _12) -> [return: bb3, unwind unreachable]; } bb3: { StorageDead(_12); StorageDead(_11); StorageLive(_15); StorageLive(_16); StorageLive(_17); _17 = copy _1; StorageLive(_18); _18 = copy _2; - _16 = Ne(move _17, move _18); + _16 = Ne(copy _1, copy _2); StorageDead(_18); StorageDead(_17); _15 = opaque::(move _16) -> [return: bb4, unwind unreachable]; } bb4: { StorageDead(_16); StorageDead(_15); _0 = const (); return; } }