Skip to content

Commit c9dc295

Browse files
committed
[InstCombine] Drop samesign in foldLogOpOfMaskedICmps
1 parent feed257 commit c9dc295

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,8 +610,11 @@ static Value *foldLogOpOfMaskedICmps(Value *LHS, Value *RHS, bool IsAnd,
610610
APInt NewMask = *ConstB & *ConstD;
611611
if (NewMask == *ConstB)
612612
return LHS;
613-
if (NewMask == *ConstD)
613+
if (NewMask == *ConstD) {
614+
if (IsLogical)
615+
cast<ICmpInst>(RHS)->setSameSign(false);
614616
return RHS;
617+
}
615618
}
616619

617620
if (Mask & AMask_NotAllOnes) {

llvm/test/Transforms/InstCombine/sign-test-and-or.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ define i1 @test9_logical(i32 %a) {
351351

352352
define i1 @test9_logical_samesign(i32 %a) {
353353
; CHECK-LABEL: @test9_logical_samesign(
354-
; CHECK-NEXT: [[CMP2:%.*]] = icmp samesign sgt i32 [[A:%.*]], -1
354+
; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[A:%.*]], -1
355355
; CHECK-NEXT: ret i1 [[CMP2]]
356356
;
357357
%masked = and i32 %a, -1073741825
@@ -363,7 +363,7 @@ define i1 @test9_logical_samesign(i32 %a) {
363363

364364
define i1 @test_logical_or_icmp_icmp_samesign(i32 %a) {
365365
; CHECK-LABEL: @test_logical_or_icmp_icmp_samesign(
366-
; CHECK-NEXT: [[CMP2:%.*]] = icmp samesign sgt i32 [[A:%.*]], -1
366+
; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[A:%.*]], -1
367367
; CHECK-NEXT: ret i1 [[CMP2]]
368368
;
369369
%cmp1 = icmp eq i32 %a, 0

0 commit comments

Comments
 (0)