diff options
Diffstat (limited to 'llvm/lib/Analysis/Loads.cpp')
-rw-r--r-- | llvm/lib/Analysis/Loads.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/Loads.cpp b/llvm/lib/Analysis/Loads.cpp index 89e42ff..393f264 100644 --- a/llvm/lib/Analysis/Loads.cpp +++ b/llvm/lib/Analysis/Loads.cpp @@ -333,6 +333,14 @@ bool llvm::isDereferenceableAndAlignedInLoop( if (isa<SCEVCouldNotCompute>(MaxBECount)) return false; + if (isa<SCEVCouldNotCompute>(BECount)) { + // TODO: Support symbolic max backedge taken counts for loops without + // computable backedge taken counts. + MaxBECount = + Predicates + ? SE.getPredicatedConstantMaxBackedgeTakenCount(L, *Predicates) + : SE.getConstantMaxBackedgeTakenCount(L); + } const auto &[AccessStart, AccessEnd] = getStartAndEndForAccess( L, PtrScev, LI->getType(), BECount, MaxBECount, &SE, nullptr); if (isa<SCEVCouldNotCompute>(AccessStart) || |