Skip to content

Commit dc4287a

Browse files
committed
!fixup drop A >= C requierement
1 parent 425e31f commit dc4287a

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

llvm/lib/Analysis/ScalarEvolution.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1795,11 +1795,9 @@ const SCEV *ScalarEvolution::getZeroExtendExprImpl(const SCEV *Op, Type *Ty,
17951795

17961796
const SCEVConstant *C;
17971797
const SCEV *A;
1798-
// zext (C + A)<nsw> -> (sext(C) + zext(A))<nsw> if zext (C + A)<nsw> >=s 0
1799-
// and A >=s V.
1798+
// zext (C + A)<nsw> -> (sext(C) + zext(A))<nsw> if zext (C + A)<nsw> >=s 0.
18001799
if (SA->hasNoSignedWrap() && isKnownNonNegative(SA) &&
1801-
match(SA, m_scev_Add(m_SCEVConstant(C), m_SCEV(A))) &&
1802-
isKnownPredicate(CmpInst::ICMP_SGE, A, C)) {
1800+
match(SA, m_scev_Add(m_SCEVConstant(C), m_SCEV(A)))) {
18031801
SmallVector<const SCEV *, 4> Ops = {getSignExtendExpr(C, Ty, Depth + 1),
18041802
getZeroExtendExpr(A, Ty, Depth + 1)};
18051803
return getAddExpr(Ops, SCEV::FlagNSW, Depth + 1);

llvm/test/Transforms/LoopStrengthReduce/X86/pr47776-do-not-apply-info-from-guards-to-addrecs.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ define void @bar() personality ptr @zot {
1919
; CHECK: bb2:
2020
; CHECK-NEXT: [[TMP3:%.*]] = phi i64 [ 0, [[BB1]] ], [ [[TMP7:%.*]], [[BB5:%.*]] ]
2121
; CHECK-NEXT: [[TMP4:%.*]] = invoke i32 @fn()
22-
; CHECK-NEXT: to label [[BB5]] unwind label [[BB23_LOOPEXIT_SPLIT_LP:%.*]]
22+
; CHECK-NEXT: to label [[BB5]] unwind label [[BB23_LOOPEXIT_SPLIT_LP:%.*]]
2323
; CHECK: bb5:
2424
; CHECK-NEXT: [[TMP6:%.*]] = load atomic i32, ptr addrspace(1) undef unordered, align 8
2525
; CHECK-NEXT: [[TMP7]] = add nuw nsw i64 [[TMP3]], 1
@@ -30,27 +30,27 @@ define void @bar() personality ptr @zot {
3030
; CHECK-NEXT: br i1 [[TMP9]], label [[BB10:%.*]], label [[BB29:%.*]]
3131
; CHECK: bb10:
3232
; CHECK-NEXT: [[TMP11:%.*]] = mul i32 [[TMP]], -1
33-
; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[TMP11]] to i64
34-
; CHECK-NEXT: [[TMP1:%.*]] = add nsw i64 [[TMP0]], 1
33+
; CHECK-NEXT: [[TMP12:%.*]] = zext i32 [[TMP11]] to i64
34+
; CHECK-NEXT: [[TMP1:%.*]] = add nuw nsw i64 [[TMP12]], 1
3535
; CHECK-NEXT: [[TMP2:%.*]] = sub i64 [[TMP1]], [[TMP7]]
36-
; CHECK-NEXT: [[TMP1:%.*]] = trunc i64 [[TMP2]] to i32
37-
; CHECK-NEXT: [[TMP16:%.*]] = and i32 [[TMP1]], 7
36+
; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[TMP2]] to i32
37+
; CHECK-NEXT: [[TMP16:%.*]] = and i32 [[TMP2]], 7
3838
; CHECK-NEXT: br label [[BB17:%.*]]
3939
; CHECK: bb17:
4040
; CHECK-NEXT: [[TMP18:%.*]] = phi i32 [ [[TMP21:%.*]], [[BB20:%.*]] ], [ [[TMP16]], [[BB10]] ]
4141
; CHECK-NEXT: [[TMP19:%.*]] = invoke i32 @fn()
42-
; CHECK-NEXT: to label [[BB20]] unwind label [[BB23_LOOPEXIT:%.*]]
42+
; CHECK-NEXT: to label [[BB20]] unwind label [[BB23_LOOPEXIT:%.*]]
4343
; CHECK: bb20:
4444
; CHECK-NEXT: [[TMP21]] = add i32 [[TMP18]], -1
4545
; CHECK-NEXT: [[TMP22:%.*]] = icmp eq i32 [[TMP21]], 0
4646
; CHECK-NEXT: br i1 [[TMP22]], label [[BB1_LOOPEXIT]], label [[BB17]]
4747
; CHECK: bb23.loopexit:
4848
; CHECK-NEXT: [[LPAD_LOOPEXIT:%.*]] = landingpad token
49-
; CHECK-NEXT: cleanup
49+
; CHECK-NEXT: cleanup
5050
; CHECK-NEXT: br label [[BB23:%.*]]
5151
; CHECK: bb23.loopexit.split-lp:
5252
; CHECK-NEXT: [[LPAD_LOOPEXIT_SPLIT_LP:%.*]] = landingpad token
53-
; CHECK-NEXT: cleanup
53+
; CHECK-NEXT: cleanup
5454
; CHECK-NEXT: br label [[BB23]]
5555
; CHECK: bb23:
5656
; CHECK-NEXT: ret void

0 commit comments

Comments
 (0)