Skip to content

Commit 3ee8870

Browse files
committed
[ValueTracking] Pass changed predicate SignedLPred to isImpliedByMatchingCmp
1 parent 2e4e389 commit 3ee8870

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

llvm/lib/Analysis/ValueTracking.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9494,7 +9494,7 @@ isImpliedCondICmps(const ICmpInst *LHS, CmpPredicate RPred, const Value *R0,
94949494
SignedLPred == ICmpInst::ICMP_SGE) &&
94959495
match(R0, m_NSWSub(m_Specific(L0), m_Specific(L1)))) {
94969496
if (match(R1, m_NonPositive()) &&
9497-
ICmpInst::isImpliedByMatchingCmp(LPred, RPred) == false)
9497+
ICmpInst::isImpliedByMatchingCmp(SignedLPred, RPred) == false)
94989498
return false;
94999499
}
95009500

@@ -9504,7 +9504,7 @@ isImpliedCondICmps(const ICmpInst *LHS, CmpPredicate RPred, const Value *R0,
95049504
SignedLPred == ICmpInst::ICMP_SLE) &&
95059505
match(R0, m_NSWSub(m_Specific(L0), m_Specific(L1)))) {
95069506
if (match(R1, m_NonNegative()) &&
9507-
ICmpInst::isImpliedByMatchingCmp(LPred, RPred) == true)
9507+
ICmpInst::isImpliedByMatchingCmp(SignedLPred, RPred) == true)
95089508
return true;
95099509
}
95109510

llvm/test/Analysis/ValueTracking/implied-condition-samesign.ll

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,9 @@ define i1 @gt_sub_nsw_ult(i8 %L0, i8 %L1, i1 %V) {
299299
; CHECK-NEXT: [[LHS:%.*]] = icmp samesign ugt i8 [[L0]], [[L1]]
300300
; CHECK-NEXT: br i1 [[LHS]], label %[[LHS_TRUE:.*]], label %[[LHS_FALSE:.*]]
301301
; CHECK: [[LHS_TRUE]]:
302-
; CHECK-NEXT: ret i1 false
302+
; CHECK-NEXT: [[R0:%.*]] = sub nsw i8 [[L0]], [[L1]]
303+
; CHECK-NEXT: [[RHS:%.*]] = icmp ult i8 [[R0]], -1
304+
; CHECK-NEXT: ret i1 [[RHS]]
303305
; CHECK: [[LHS_FALSE]]:
304306
; CHECK-NEXT: ret i1 [[V]]
305307
;
@@ -321,7 +323,9 @@ define i1 @ul_sub_nsw_ult(i8 %L0, i8 %L1, i1 %V) {
321323
; CHECK-NEXT: [[LHS:%.*]] = icmp samesign ult i8 [[L0]], [[L1]]
322324
; CHECK-NEXT: br i1 [[LHS]], label %[[LHS_TRUE:.*]], label %[[LHS_FALSE:.*]]
323325
; CHECK: [[LHS_TRUE]]:
324-
; CHECK-NEXT: ret i1 true
326+
; CHECK-NEXT: [[R0:%.*]] = sub nsw i8 [[L0]], [[L1]]
327+
; CHECK-NEXT: [[RHS:%.*]] = icmp ult i8 [[R0]], 1
328+
; CHECK-NEXT: ret i1 [[RHS]]
325329
; CHECK: [[LHS_FALSE]]:
326330
; CHECK-NEXT: ret i1 [[V]]
327331
;

0 commit comments

Comments
 (0)