Skip to content

Commit 4a30bfe

Browse files
committed
update
1 parent 3e63609 commit 4a30bfe

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

llvm/lib/Transforms/Scalar/ConstraintElimination.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,10 +1137,10 @@ void State::addInfoFor(BasicBlock &BB) {
11371137
FactOrCheck::getCheck(DT.getNode(&BB), cast<CallInst>(&I)));
11381138
// TODO: Check if it is possible to instead only added the min/max facts
11391139
// when simplifying uses of the min/max intrinsics.
1140-
[[fallthrough]];
1141-
case Intrinsic::abs:
11421140
if (!isGuaranteedNotToBePoison(&I))
11431141
break;
1142+
[[fallthrough]];
1143+
case Intrinsic::abs:
11441144
WorkList.push_back(FactOrCheck::getInstFact(DT.getNode(&BB), &I));
11451145
break;
11461146
}

llvm/test/Transforms/ConstraintElimination/abs.ll

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ define i1 @abs_int_min_is_poison(i32 noundef %arg) {
1616
; CHECK-LABEL: define i1 @abs_int_min_is_poison(
1717
; CHECK-SAME: i32 noundef [[ARG:%.*]]) {
1818
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
19-
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], [[ARG]]
20-
; CHECK-NEXT: ret i1 [[CMP]]
19+
; CHECK-NEXT: ret i1 true
2120
;
2221
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
2322
%cmp = icmp sge i32 %abs, %arg
@@ -42,8 +41,7 @@ define i1 @abs_plus_one_min_is_poison(i32 noundef %arg) {
4241
; CHECK-SAME: i32 noundef [[ARG:%.*]]) {
4342
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
4443
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nsw i32 [[ABS]], 1
45-
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS_PLUS_ONE]], [[ARG]]
46-
; CHECK-NEXT: ret i1 [[CMP]]
44+
; CHECK-NEXT: ret i1 true
4745
;
4846
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
4947
%abs_plus_one = add nsw i32 %abs, 1
@@ -70,8 +68,7 @@ define i1 @arg_minus_one_strict_less_min_is_poison(i32 noundef %arg) {
7068
; CHECK-SAME: i32 noundef [[ARG:%.*]]) {
7169
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
7270
; CHECK-NEXT: [[ARG_MINUS_ONE:%.*]] = add nsw i32 [[ARG]], -1
73-
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[ARG_MINUS_ONE]], [[ABS]]
74-
; CHECK-NEXT: ret i1 [[CMP]]
71+
; CHECK-NEXT: ret i1 true
7572
;
7673
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
7774
%arg_minus_one = add nsw i32 %arg, -1
@@ -97,8 +94,7 @@ define i1 @arg_minus_one_strict_greater_min_is_poison(i32 noundef %arg) {
9794
; CHECK-SAME: i32 noundef [[ARG:%.*]]) {
9895
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
9996
; CHECK-NEXT: [[ARG_MINUS_ONE:%.*]] = add nsw i32 [[ARG]], -1
100-
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[ARG_MINUS_ONE]], [[ABS]]
101-
; CHECK-NEXT: ret i1 [[CMP]]
97+
; CHECK-NEXT: ret i1 false
10298
;
10399
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
104100
%arg_minus_one = add nsw i32 %arg, -1
@@ -130,8 +126,7 @@ define i1 @abs_plus_one_unsigned_greater_or_equal_nonnegative_arg_min_is_poison(
130126
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_ARG_NONNEGATIVE]])
131127
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
132128
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ABS]], 1
133-
; CHECK-NEXT: [[CMP:%.*]] = icmp uge i32 [[ABS_PLUS_ONE]], [[ARG]]
134-
; CHECK-NEXT: ret i1 [[CMP]]
129+
; CHECK-NEXT: ret i1 true
135130
;
136131
%cmp_arg_nonnegative = icmp sge i32 %arg, 0
137132
call void @llvm.assume(i1 %cmp_arg_nonnegative)
@@ -216,8 +211,7 @@ define i1 @abs_is_nonnegative_int_min_is_poison(i32 noundef %arg) {
216211
; CHECK-LABEL: define i1 @abs_is_nonnegative_int_min_is_poison(
217212
; CHECK-SAME: i32 noundef [[ARG:%.*]]) {
218213
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
219-
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], 0
220-
; CHECK-NEXT: ret i1 [[CMP]]
214+
; CHECK-NEXT: ret i1 true
221215
;
222216
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
223217
%cmp = icmp sge i32 %abs, 0
@@ -227,8 +221,7 @@ define i1 @abs_is_nonnegative_int_min_is_poison(i32 noundef %arg) {
227221
define i1 @abs_is_nonnegative_constant_arg() {
228222
; CHECK-LABEL: define i1 @abs_is_nonnegative_constant_arg() {
229223
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 -3, i1 true)
230-
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], 0
231-
; CHECK-NEXT: ret i1 [[CMP]]
224+
; CHECK-NEXT: ret i1 true
232225
;
233226
%abs = tail call i32 @llvm.abs.i32(i32 -3, i1 true)
234227
%cmp = icmp sge i32 %abs, 0

0 commit comments

Comments
 (0)