diff options
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 2b714de3b3f..c9af6de79d9 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -2924,8 +2924,12 @@ bool ScalarEvolutionsImpl::potentialInfiniteLoop(SCEV *Stride, SCEV *RHS,    if (!R)      return true; -  if (isSigned) +  if (isSigned) { +    if (SC->getValue()->isOne()) +      return R->getValue()->isMaxValue(true); +      return true;  // XXX: because we don't have an sdiv scev. +  }    // If negative, it wraps around every iteration, but we don't care about that.    APInt S = SC->getValue()->getValue().abs();  | 

