diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp index baef7b9a196..8cdfb3ad3f8 100644 --- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -1119,6 +1119,13 @@ void Cost::RateRegister(const SCEV *Reg,        if (isExistingPhi(AR, SE))          return; +      // It is bad to allow LSR for current loop to add induction variables +      // for its sibling loops. +      if (!AR->getLoop()->contains(L)) { +        Lose(); +        return; +      } +        // Otherwise, it will be an invariant with respect to Loop L.        ++NumRegs;        return; | 

