if (ADec.empty() || BDec.empty())
return {};
- // Skip trivial constraints without any variables.
- if (ADec.size() == 1 && BDec.size() == 1)
- return {};
-
int64_t Offset1 = ADec[0].first;
int64_t Offset2 = BDec[0].first;
Offset1 *= -1;
Info.getValue2Index(CmpInst::isSigned(C.Pred)), NewIndices);
// TODO: properly check NewIndices.
return NewIndices.empty() && R.Preconditions.empty() && !R.IsEq &&
- R.size() >= 2 &&
+ R.size() >= 1 &&
Info.getCS(CmpInst::isSigned(C.Pred))
.isConditionImplied(R.Coefficients);
});
DenseMap<Value *, unsigned> NewIndices;
auto R = getConstraint(Cmp, Info, NewIndices);
- if (R.IsEq || R.size() < 2 || R.needsNewIndices(NewIndices) ||
+ if (R.IsEq || R.empty() || R.needsNewIndices(NewIndices) ||
!R.isValid(Info))
continue;
; CHECK-NEXT: entry:
; CHECK-NEXT: [[T_0:%.*]] = icmp ult i8 10, 11
; CHECK-NEXT: [[F_0:%.*]] = icmp ult i8 10, 10
-; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_0]], [[F_0]]
+; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, false
; CHECK-NEXT: [[F_1:%.*]] = icmp ult i8 10, 9
-; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[F_1]]
+; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], false
; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 10, -10
-; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[RES_2]], [[T_1]]
+; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[RES_2]], true
; CHECK-NEXT: ret i1 [[RES_3]]
;
entry:
; CHECK-NEXT: entry:
; CHECK-NEXT: [[T_0:%.*]] = icmp ult i8 10, 11
; CHECK-NEXT: [[F_0:%.*]] = icmp ult i8 10, 10
-; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_0]], [[F_0]]
+; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, false
; CHECK-NEXT: [[F_1:%.*]] = icmp ult i8 10, 9
-; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[F_1]]
+; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], false
; CHECK-NEXT: [[F_2:%.*]] = icmp ult i8 10, -10
-; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[RES_2]], [[F_2]]
+; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[RES_2]], true
; CHECK-NEXT: ret i1 [[RES_3]]
;
entry: