Index: llvm/test/Transforms/InstCombine/icmp-sub.ll =================================================================== --- llvm/test/Transforms/InstCombine/icmp-sub.ll +++ llvm/test/Transforms/InstCombine/icmp-sub.ll @@ -561,3 +561,30 @@ bb_exit: ret void } + +; https://alive2.llvm.org/ce/z/D2Aph4 +define i1 @PR60818_ne(i32 %a) { +; CHECK-LABEL: @PR60818_ne( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[A:%.*]] +; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[SUB]], [[A]] +; CHECK-NEXT: ret i1 [[CMP]] +; +entry: + %sub = sub i32 0, %a + %cmp = icmp ne i32 %sub, %a + ret i1 %cmp +} + +define i1 @PR60818_eq(i32 %a) { +; CHECK-LABEL: @PR60818_eq( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[A:%.*]] +; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[SUB]], [[A]] +; CHECK-NEXT: ret i1 [[CMP]] +; +entry: + %sub = sub i32 0, %a + %cmp = icmp eq i32 %sub, %a + ret i1 %cmp +}