[llvm] 4949fb7 - [CVP] Don't allow undef range when inferring nowrap flags
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 12 02:26:12 PST 2023
Author: Nikita Popov
Date: 2023-12-12T11:26:00+01:00
New Revision: 4949fb7954ba3b98026ce358af328396b858134a
URL: https://github.com/llvm/llvm-project/commit/4949fb7954ba3b98026ce358af328396b858134a
DIFF: https://github.com/llvm/llvm-project/commit/4949fb7954ba3b98026ce358af328396b858134a.diff
LOG: [CVP] Don't allow undef range when inferring nowrap flags
Added:
Modified:
llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
llvm/test/Transforms/CorrelatedValuePropagation/add.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp b/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
index a5cf875ef3541d..669bdf50ba6e6e 100644
--- a/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
+++ b/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
@@ -1048,8 +1048,10 @@ static bool processBinOp(BinaryOperator *BinOp, LazyValueInfo *LVI) {
Value *LHS = BinOp->getOperand(0);
Value *RHS = BinOp->getOperand(1);
- ConstantRange LRange = LVI->getConstantRange(LHS, BinOp);
- ConstantRange RRange = LVI->getConstantRange(RHS, BinOp);
+ ConstantRange LRange =
+ LVI->getConstantRange(LHS, BinOp, /*UndefAllowed*/ false);
+ ConstantRange RRange =
+ LVI->getConstantRange(RHS, BinOp, /*UndefAllowed*/ false);
bool Changed = false;
bool NewNUW = false, NewNSW = false;
diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/add.ll b/llvm/test/Transforms/CorrelatedValuePropagation/add.ll
index 0768408563f5c1..b29a496ab1deb9 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/add.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/add.ll
@@ -527,7 +527,6 @@ exit:
ret i32 %acc.curr
}
-; FIXME: This is a miscompile.
define i32 @test_undef_range(i32 %x) {
; CHECK-LABEL: define i32 @test_undef_range(
; CHECK-SAME: i32 [[X:%.*]]) {
@@ -542,7 +541,7 @@ define i32 @test_undef_range(i32 %x) {
; CHECK-NEXT: br label [[JOIN]]
; CHECK: join:
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 1, [[CASE1]] ], [ 2, [[CASE2]] ], [ undef, [[ENTRY:%.*]] ]
-; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[PHI]], 1
+; CHECK-NEXT: [[ADD:%.*]] = add i32 [[PHI]], 1
; CHECK-NEXT: ret i32 [[ADD]]
;
entry:
More information about the llvm-commits
mailing list