Skip to content

Commit 4a10b2b

Browse files
committed
!fixup adress comments, reorder code
1 parent 632fe58 commit 4a10b2b

File tree

1 file changed

+16
-28
lines changed

1 file changed

+16
-28
lines changed

llvm/lib/Analysis/ScalarEvolution.cpp

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14973,10 +14973,7 @@ const SCEVAddRecExpr *SCEVWrapPredicate::getExpr() const { return AR; }
1497314973
bool SCEVWrapPredicate::implies(const SCEVPredicate *N,
1497414974
ScalarEvolution &SE) const {
1497514975
const auto *Op = dyn_cast<SCEVWrapPredicate>(N);
14976-
if (!Op)
14977-
return false;
14978-
14979-
if (setFlags(Flags, Op->Flags) != Flags)
14976+
if (!Op || setFlags(Flags, Op->Flags) != Flags)
1498014977
return false;
1498114978

1498214979
if (Op->AR == AR)
@@ -14986,36 +14983,27 @@ bool SCEVWrapPredicate::implies(const SCEVPredicate *N,
1498614983
Flags != SCEVWrapPredicate::IncrementNUSW)
1498714984
return false;
1498814985

14989-
bool IsNUW = Flags == SCEVWrapPredicate::IncrementNUSW;
1499014986
const SCEV *Step = AR->getStepRecurrence(SE);
1499114987
const SCEV *OpStep = Op->AR->getStepRecurrence(SE);
14988+
if (!SE.isKnownPositive(Step) || !SE.isKnownPositive(OpStep))
14989+
return false;
1499214990

1499314991
// If both steps are positive, this implies N, if N's start and step are
1499414992
// ULE/SLE (for NSUW/NSSW) than this'.
14995-
if (SE.isKnownPositive(Step) && SE.isKnownPositive(OpStep)) {
14996-
const SCEV *OpStart = Op->AR->getStart();
14997-
const SCEV *Start = AR->getStart();
14998-
if (SE.getTypeSizeInBits(Step->getType()) >
14999-
SE.getTypeSizeInBits(OpStep->getType())) {
15000-
OpStep = SE.getZeroExtendExpr(OpStep, Step->getType());
15001-
} else {
15002-
Step = IsNUW ? SE.getNoopOrZeroExtend(Step, OpStep->getType())
15003-
: SE.getNoopOrSignExtend(Step, OpStep->getType());
15004-
}
15005-
if (SE.getTypeSizeInBits(Start->getType()) >
15006-
SE.getTypeSizeInBits(OpStart->getType())) {
15007-
OpStart = IsNUW ? SE.getZeroExtendExpr(OpStart, Start->getType())
15008-
: SE.getSignExtendExpr(OpStart, Start->getType());
15009-
} else {
15010-
Start = IsNUW ? SE.getNoopOrZeroExtend(Start, OpStart->getType())
15011-
: SE.getNoopOrSignExtend(Start, OpStart->getType());
15012-
}
14993+
Type *WiderTy = SE.getWiderType(Step->getType(), OpStep->getType());
14994+
Step = SE.getNoopOrZeroExtend(Step, WiderTy);
14995+
OpStep = SE.getNoopOrZeroExtend(OpStep, WiderTy);
1501314996

15014-
CmpInst::Predicate Pred = IsNUW ? CmpInst::ICMP_ULE : CmpInst::ICMP_SLE;
15015-
return SE.isKnownPredicate(Pred, OpStep, Step) &&
15016-
SE.isKnownPredicate(Pred, OpStart, Start);
15017-
}
15018-
return false;
14997+
bool IsNUW = Flags == SCEVWrapPredicate::IncrementNUSW;
14998+
const SCEV *OpStart = Op->AR->getStart();
14999+
const SCEV *Start = AR->getStart();
15000+
OpStart = IsNUW ? SE.getNoopOrZeroExtend(OpStart, WiderTy)
15001+
: SE.getNoopOrSignExtend(OpStart, WiderTy);
15002+
Start = IsNUW ? SE.getNoopOrZeroExtend(Start, WiderTy)
15003+
: SE.getNoopOrSignExtend(Start, WiderTy);
15004+
CmpInst::Predicate Pred = IsNUW ? CmpInst::ICMP_ULE : CmpInst::ICMP_SLE;
15005+
return SE.isKnownPredicate(Pred, OpStep, Step) &&
15006+
SE.isKnownPredicate(Pred, OpStart, Start);
1501915007
}
1502015008

1502115009
bool SCEVWrapPredicate::isAlwaysTrue() const {

0 commit comments

Comments
 (0)