[llvm] 8a15caa - [ConstraintElimination] Fix sign of sub decomposition.
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 24 10:32:58 PST 2022
Author: Florian Hahn
Date: 2022-01-24T18:32:32Z
New Revision: 8a15caaae56182815839741de414a0ba60037a9a
URL: https://github.com/llvm/llvm-project/commit/8a15caaae56182815839741de414a0ba60037a9a
DIFF: https://github.com/llvm/llvm-project/commit/8a15caaae56182815839741de414a0ba60037a9a.diff
LOG: [ConstraintElimination] Fix sign of sub decomposition.
Update the decomposition code to make sure the right coefficient (-1) is
used for the second operand of the subtract.
Fixes PR53123.
Added:
Modified:
llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
llvm/test/Transforms/ConstraintElimination/sub-nuw.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
index 7f2d5d7d9987..fcb88b54a094 100644
--- a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
@@ -108,7 +108,7 @@ static SmallVector<std::pair<int64_t, Value *>, 4> decompose(Value *V) {
if (match(V, m_NUWSub(m_Value(Op0), m_ConstantInt(CI))))
return {{-1 * CI->getSExtValue(), nullptr}, {1, Op0}};
if (match(V, m_NUWSub(m_Value(Op0), m_Value(Op1))))
- return {{0, nullptr}, {1, Op0}, {1, Op1}};
+ return {{0, nullptr}, {1, Op0}, {-1, Op1}};
return {{0, nullptr}, {1, V}};
}
diff --git a/llvm/test/Transforms/ConstraintElimination/sub-nuw.ll b/llvm/test/Transforms/ConstraintElimination/sub-nuw.ll
index 4d3b259b0143..25594db9905d 100644
--- a/llvm/test/Transforms/ConstraintElimination/sub-nuw.ll
+++ b/llvm/test/Transforms/ConstraintElimination/sub-nuw.ll
@@ -247,7 +247,7 @@ define i16 @test_pr53123_sub_constraint_sign(i16 %v) {
; CHECK-NEXT: [[ADD:%.*]] = shl nuw nsw i16 [[V]], 1
; CHECK-NEXT: [[SUB9:%.*]] = sub nuw nsw i16 32767, [[ADD]]
; CHECK-NEXT: [[CMP11:%.*]] = icmp ugt i16 [[ADD]], [[SUB9]]
-; CHECK-NEXT: br i1 false, label [[BB_3:%.*]], label [[BB_2]]
+; CHECK-NEXT: br i1 [[CMP11]], label [[BB_3:%.*]], label [[BB_2]]
; CHECK: bb.2:
; CHECK-NEXT: ret i16 1
; CHECK: bb.3:
More information about the llvm-commits
mailing list