diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopPeel.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopPeel.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopPeel.cpp b/llvm/lib/Transforms/Utils/LoopPeel.cpp index 4eaa3c9..52ce7af 100644 --- a/llvm/lib/Transforms/Utils/LoopPeel.cpp +++ b/llvm/lib/Transforms/Utils/LoopPeel.cpp @@ -18,6 +18,7 @@ #include "llvm/Analysis/LoopIterator.h" #include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/ScalarEvolutionExpressions.h" +#include "llvm/Analysis/ScalarEvolutionPatternMatch.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/IR/BasicBlock.h" #include "llvm/IR/Dominators.h" @@ -45,6 +46,7 @@ using namespace llvm; using namespace llvm::PatternMatch; +using namespace llvm::SCEVPatternMatch; #define DEBUG_TYPE "loop-peel" @@ -351,8 +353,8 @@ bool llvm::canPeelLastIteration(const Loop &L, ScalarEvolution &SE) { m_BasicBlock(Succ1), m_BasicBlock(Succ2))) && ((Pred == CmpInst::ICMP_EQ && Succ2 == L.getHeader()) || (Pred == CmpInst::ICMP_NE && Succ1 == L.getHeader())) && - isa<SCEVAddRecExpr>(SE.getSCEV(Inc)) && - cast<SCEVAddRecExpr>(SE.getSCEV(Inc))->getStepRecurrence(SE)->isOne(); + match(SE.getSCEV(Inc), + m_scev_AffineAddRec(m_SCEV(), m_scev_One(), m_SpecificLoop(&L))); } /// Returns true if the last iteration can be peeled off and the condition (Pred |