[llvm] [SCEV] Init BE vars to CouldNotCompute in howManyLT (NFC) (PR #222892)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 02:11:23 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-analysis
Author: Ramkumar Ramachandra (artagnon)
<details>
<summary>Changes</summary>
This avoids the risk of initializing ExitLimit with nullptr BE variables, and cast-asserts on nullptr.
---
Full diff: https://github.com/llvm/llvm-project/pull/222892.diff
1 Files Affected:
- (modified) llvm/lib/Analysis/ScalarEvolution.cpp (+4-5)
``````````diff
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 06f350fd2179b..f7063661403ef 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -13538,8 +13538,8 @@ ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS,
return RHS;
}
- const SCEV *End = nullptr, *BECount = nullptr,
- *BECountIfBackedgeTaken = nullptr;
+ const SCEV *End = nullptr, *BECount = getCouldNotCompute(),
+ *BECountIfBackedgeTaken = getCouldNotCompute();
if (!isLoopInvariant(RHS, L)) {
const auto *RHSAddRec = dyn_cast<SCEVAddRecExpr>(RHS);
if (PositiveStride && RHSAddRec != nullptr && RHSAddRec->getLoop() == L &&
@@ -13717,7 +13717,7 @@ ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS,
BECount = getUDivExpr(Numerator, Stride);
}
- if (!BECount) {
+ if (isa<SCEVCouldNotCompute>(BECount)) {
auto canProveRHSGreaterThanEqualStart = [&]() {
auto CondGE = IsSigned ? ICmpInst::ICMP_SGE : ICmpInst::ICMP_UGE;
const SCEV *GuardedRHS = applyLoopGuards(OrigRHS, L);
@@ -13780,8 +13780,7 @@ ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS,
bool MaxOrZero = false;
if (isa<SCEVConstant>(BECount)) {
ConstantMaxBECount = BECount;
- } else if (BECountIfBackedgeTaken &&
- isa<SCEVConstant>(BECountIfBackedgeTaken)) {
+ } else if (isa<SCEVConstant>(BECountIfBackedgeTaken)) {
// If we know exactly how many times the backedge will be taken if it's
// taken at least once, then the backedge count will either be that or
// zero.
``````````
</details>
https://github.com/llvm/llvm-project/pull/222892
More information about the llvm-commits
mailing list