diff options
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index b841f928448..5f8db62390d 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -4577,12 +4577,15 @@ ConstantRange ScalarEvolution::getRangeViaFactoring(const SCEV *Start, // from deep in the call stack, and calling getSCEV (on a sext instruction, // say) can end up caching a suboptimal value. + APInt TrueStart = *StartPattern.TrueValue + Offset; + APInt TrueStep = *StepPattern.TrueValue; + APInt FalseStart = *StartPattern.FalseValue + Offset; + APInt FalseStep = *StepPattern.FalseValue; + ConstantRange TrueRange = getRangeForAffineAR( - getConstant(*StartPattern.TrueValue + Offset), - getConstant(*StepPattern.TrueValue), MaxBECount, BitWidth); + getConstant(TrueStart), getConstant(TrueStep), MaxBECount, BitWidth); ConstantRange FalseRange = getRangeForAffineAR( - getConstant(*StartPattern.FalseValue + Offset), - getConstant(*StepPattern.FalseValue), MaxBECount, BitWidth); + getConstant(FalseStart), getConstant(FalseStep), MaxBECount, BitWidth); return TrueRange.unionWith(FalseRange); } |