Skip to content

Commit 4949fb7

Browse files
committed
[CVP] Don't allow undef range when inferring nowrap flags
1 parent 5799d13 commit 4949fb7

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,8 +1048,10 @@ static bool processBinOp(BinaryOperator *BinOp, LazyValueInfo *LVI) {
10481048
Value *LHS = BinOp->getOperand(0);
10491049
Value *RHS = BinOp->getOperand(1);
10501050

1051-
ConstantRange LRange = LVI->getConstantRange(LHS, BinOp);
1052-
ConstantRange RRange = LVI->getConstantRange(RHS, BinOp);
1051+
ConstantRange LRange =
1052+
LVI->getConstantRange(LHS, BinOp, /*UndefAllowed*/ false);
1053+
ConstantRange RRange =
1054+
LVI->getConstantRange(RHS, BinOp, /*UndefAllowed*/ false);
10531055

10541056
bool Changed = false;
10551057
bool NewNUW = false, NewNSW = false;

llvm/test/Transforms/CorrelatedValuePropagation/add.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,6 @@ exit:
527527
ret i32 %acc.curr
528528
}
529529

530-
; FIXME: This is a miscompile.
531530
define i32 @test_undef_range(i32 %x) {
532531
; CHECK-LABEL: define i32 @test_undef_range(
533532
; CHECK-SAME: i32 [[X:%.*]]) {
@@ -542,7 +541,7 @@ define i32 @test_undef_range(i32 %x) {
542541
; CHECK-NEXT: br label [[JOIN]]
543542
; CHECK: join:
544543
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 1, [[CASE1]] ], [ 2, [[CASE2]] ], [ undef, [[ENTRY:%.*]] ]
545-
; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[PHI]], 1
544+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[PHI]], 1
546545
; CHECK-NEXT: ret i32 [[ADD]]
547546
;
548547
entry:

0 commit comments

Comments
 (0)