@@ -1372,7 +1372,7 @@ Value *llvm::SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact,
1372
1372
// / with the parameters swapped.
1373
1373
static Value *simplifyUnsignedRangeCheck (ICmpInst *ZeroICmp,
1374
1374
ICmpInst *UnsignedICmp, bool IsAnd,
1375
- const DataLayout &DL ) {
1375
+ const SimplifyQuery &Q ) {
1376
1376
Value *X, *Y;
1377
1377
1378
1378
ICmpInst::Predicate EqPred;
@@ -1399,13 +1399,13 @@ static Value *simplifyUnsignedRangeCheck(ICmpInst *ZeroICmp,
1399
1399
// X <= Y && Y != 0 --> X <= Y iff X != 0
1400
1400
// X <= Y || Y != 0 --> Y != 0 iff X != 0
1401
1401
if (UnsignedPred == ICmpInst::ICMP_ULE && EqPred == ICmpInst::ICMP_NE &&
1402
- isKnownNonZero (X, DL ))
1402
+ isKnownNonZero (X, Q. DL , /* Depth= */ 0 , Q. AC , Q. CxtI , Q. DT ))
1403
1403
return IsAnd ? UnsignedICmp : ZeroICmp;
1404
1404
1405
1405
// X > Y && Y == 0 --> Y == 0 iff X != 0
1406
1406
// X > Y || Y == 0 --> X > Y iff X != 0
1407
1407
if (UnsignedPred == ICmpInst::ICMP_UGT && EqPred == ICmpInst::ICMP_EQ &&
1408
- isKnownNonZero (X, DL ))
1408
+ isKnownNonZero (X, Q. DL , /* Depth= */ 0 , Q. AC , Q. CxtI , Q. DT ))
1409
1409
return IsAnd ? ZeroICmp : UnsignedICmp;
1410
1410
1411
1411
// X >= Y || Y != 0 --> true
@@ -1600,11 +1600,10 @@ static Value *simplifyAndOfICmpsWithAdd(ICmpInst *Op0, ICmpInst *Op1,
1600
1600
}
1601
1601
1602
1602
static Value *simplifyAndOfICmps (ICmpInst *Op0, ICmpInst *Op1,
1603
- const InstrInfoQuery &IIQ,
1604
- const DataLayout &DL) {
1605
- if (Value *X = simplifyUnsignedRangeCheck (Op0, Op1, /* IsAnd=*/ true , DL))
1603
+ const SimplifyQuery &Q) {
1604
+ if (Value *X = simplifyUnsignedRangeCheck (Op0, Op1, /* IsAnd=*/ true , Q))
1606
1605
return X;
1607
- if (Value *X = simplifyUnsignedRangeCheck (Op1, Op0, /* IsAnd=*/ true , DL ))
1606
+ if (Value *X = simplifyUnsignedRangeCheck (Op1, Op0, /* IsAnd=*/ true , Q ))
1608
1607
return X;
1609
1608
1610
1609
if (Value *X = simplifyAndOfICmpsWithSameOperands (Op0, Op1))
@@ -1618,9 +1617,9 @@ static Value *simplifyAndOfICmps(ICmpInst *Op0, ICmpInst *Op1,
1618
1617
if (Value *X = simplifyAndOrOfICmpsWithZero (Op0, Op1, true ))
1619
1618
return X;
1620
1619
1621
- if (Value *X = simplifyAndOfICmpsWithAdd (Op0, Op1, IIQ))
1620
+ if (Value *X = simplifyAndOfICmpsWithAdd (Op0, Op1, Q. IIQ ))
1622
1621
return X;
1623
- if (Value *X = simplifyAndOfICmpsWithAdd (Op1, Op0, IIQ))
1622
+ if (Value *X = simplifyAndOfICmpsWithAdd (Op1, Op0, Q. IIQ ))
1624
1623
return X;
1625
1624
1626
1625
return nullptr ;
@@ -1674,11 +1673,10 @@ static Value *simplifyOrOfICmpsWithAdd(ICmpInst *Op0, ICmpInst *Op1,
1674
1673
}
1675
1674
1676
1675
static Value *simplifyOrOfICmps (ICmpInst *Op0, ICmpInst *Op1,
1677
- const InstrInfoQuery &IIQ,
1678
- const DataLayout &DL) {
1679
- if (Value *X = simplifyUnsignedRangeCheck (Op0, Op1, /* IsAnd=*/ false , DL))
1676
+ const SimplifyQuery &Q) {
1677
+ if (Value *X = simplifyUnsignedRangeCheck (Op0, Op1, /* IsAnd=*/ false , Q))
1680
1678
return X;
1681
- if (Value *X = simplifyUnsignedRangeCheck (Op1, Op0, /* IsAnd=*/ false , DL ))
1679
+ if (Value *X = simplifyUnsignedRangeCheck (Op1, Op0, /* IsAnd=*/ false , Q ))
1682
1680
return X;
1683
1681
1684
1682
if (Value *X = simplifyOrOfICmpsWithSameOperands (Op0, Op1))
@@ -1692,9 +1690,9 @@ static Value *simplifyOrOfICmps(ICmpInst *Op0, ICmpInst *Op1,
1692
1690
if (Value *X = simplifyAndOrOfICmpsWithZero (Op0, Op1, false ))
1693
1691
return X;
1694
1692
1695
- if (Value *X = simplifyOrOfICmpsWithAdd (Op0, Op1, IIQ))
1693
+ if (Value *X = simplifyOrOfICmpsWithAdd (Op0, Op1, Q. IIQ ))
1696
1694
return X;
1697
- if (Value *X = simplifyOrOfICmpsWithAdd (Op1, Op0, IIQ))
1695
+ if (Value *X = simplifyOrOfICmpsWithAdd (Op1, Op0, Q. IIQ ))
1698
1696
return X;
1699
1697
1700
1698
return nullptr ;
@@ -1753,8 +1751,8 @@ static Value *simplifyAndOrOfCmps(const SimplifyQuery &Q,
1753
1751
auto *ICmp0 = dyn_cast<ICmpInst>(Op0);
1754
1752
auto *ICmp1 = dyn_cast<ICmpInst>(Op1);
1755
1753
if (ICmp0 && ICmp1)
1756
- V = IsAnd ? simplifyAndOfICmps (ICmp0, ICmp1, Q. IIQ , Q. DL )
1757
- : simplifyOrOfICmps (ICmp0, ICmp1, Q. IIQ , Q. DL );
1754
+ V = IsAnd ? simplifyAndOfICmps (ICmp0, ICmp1, Q)
1755
+ : simplifyOrOfICmps (ICmp0, ICmp1, Q);
1758
1756
1759
1757
auto *FCmp0 = dyn_cast<FCmpInst>(Op0);
1760
1758
auto *FCmp1 = dyn_cast<FCmpInst>(Op1);
0 commit comments