[llvm] cc2eb3b - [SCEV][NFC] Simplify internals of BackedgeTakenInfo
Max Kazantsev via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 22 03:40:23 PDT 2020
Author: Max Kazantsev
Date: 2020-10-22T17:39:56+07:00
New Revision: cc2eb3b5e2582da2412f6d30955ddbd9b0f3a16a
URL: https://github.com/llvm/llvm-project/commit/cc2eb3b5e2582da2412f6d30955ddbd9b0f3a16a
DIFF: https://github.com/llvm/llvm-project/commit/cc2eb3b5e2582da2412f6d30955ddbd9b0f3a16a.diff
LOG: [SCEV][NFC] Simplify internals of BackedgeTakenInfo
Added:
Modified:
llvm/include/llvm/Analysis/ScalarEvolution.h
llvm/lib/Analysis/ScalarEvolution.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/ScalarEvolution.h b/llvm/include/llvm/Analysis/ScalarEvolution.h
index a0047d38f26d..c8a5d02f7179 100644
--- a/llvm/include/llvm/Analysis/ScalarEvolution.h
+++ b/llvm/include/llvm/Analysis/ScalarEvolution.h
@@ -1317,36 +1317,34 @@ class ScalarEvolution {
/// never have more than one computable exit.
SmallVector<ExitNotTakenInfo, 1> ExitNotTaken;
- /// The pointer part of \c ConstantMaxAndComplete is an expression
- /// indicating the least maximum backedge-taken count of the loop that is
- /// known, or a SCEVCouldNotCompute. This expression is only valid if the
- /// predicates associated with all loop exits are true.
- ///
- /// The integer part of \c ConstantMaxAndComplete is a boolean indicating if
- /// \c ExitNotTaken has an element for every exiting block in the loop.
- PointerIntPair<const SCEV *, 1> ConstantMaxAndComplete;
+ /// Expression indicating the least maximum backedge-taken count of the loop
+ /// that is known, or a SCEVCouldNotCompute. This expression is only valid
+ /// if the redicates associated with all loop exits are true.
+ const SCEV *ConstantMax;
+
+ /// Indicating if \c ExitNotTaken has an element for every exiting block in
+ /// the loop.
+ bool IsComplete;
/// True iff the backedge is taken either exactly Max or zero times.
bool MaxOrZero = false;
/// \name Helper projection functions on \c ConstantMaxAndComplete.
/// @{
- bool isComplete() const { return ConstantMaxAndComplete.getInt(); }
- const SCEV *getConstantMax() const {
- return ConstantMaxAndComplete.getPointer();
- }
+ bool isComplete() const { return IsComplete; }
+ const SCEV *getConstantMax() const { return ConstantMax; }
/// @}
public:
- BackedgeTakenInfo() : ConstantMaxAndComplete(nullptr, 0) {}
+ BackedgeTakenInfo() : ConstantMax(nullptr), IsComplete(false) {}
BackedgeTakenInfo(BackedgeTakenInfo &&) = default;
BackedgeTakenInfo &operator=(BackedgeTakenInfo &&) = default;
using EdgeExitInfo = std::pair<BasicBlock *, ExitLimit>;
/// Initialize BackedgeTakenInfo from a list of exact exit counts.
- BackedgeTakenInfo(ArrayRef<EdgeExitInfo> ExitCounts, bool Complete,
- const SCEV *MaxCount, bool MaxOrZero);
+ BackedgeTakenInfo(ArrayRef<EdgeExitInfo> ExitCounts, bool IsComplete,
+ const SCEV *ConstantMax, bool MaxOrZero);
/// Test whether this BackedgeTakenInfo contains any computed information,
/// or whether it's all SCEVCouldNotCompute values.
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 00d580b2f66c..55d759568b4e 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -6930,10 +6930,9 @@ ScalarEvolution::ExitLimit::ExitLimit(const SCEV *E, const SCEV *M,
/// Allocate memory for BackedgeTakenInfo and copy the not-taken count of each
/// computable exit into a persistent ExitNotTakenInfo array.
ScalarEvolution::BackedgeTakenInfo::BackedgeTakenInfo(
- ArrayRef<ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo>
- ExitCounts,
- bool Complete, const SCEV *MaxCount, bool MaxOrZero)
- : ConstantMaxAndComplete(MaxCount, Complete), MaxOrZero(MaxOrZero) {
+ ArrayRef<ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo> ExitCounts,
+ bool IsComplete, const SCEV *ConstantMax, bool MaxOrZero)
+ : ConstantMax(ConstantMax), IsComplete(IsComplete), MaxOrZero(MaxOrZero) {
using EdgeExitInfo = ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo;
ExitNotTaken.reserve(ExitCounts.size());
@@ -6953,7 +6952,8 @@ ScalarEvolution::BackedgeTakenInfo::BackedgeTakenInfo(
return ExitNotTakenInfo(ExitBB, EL.ExactNotTaken, EL.MaxNotTaken,
std::move(Predicate));
});
- assert((isa<SCEVCouldNotCompute>(MaxCount) || isa<SCEVConstant>(MaxCount)) &&
+ assert((isa<SCEVCouldNotCompute>(ConstantMax) ||
+ isa<SCEVConstant>(ConstantMax)) &&
"No point in having a non-constant max backedge taken count!");
}
More information about the llvm-commits
mailing list