diff options
author | Dan Gohman <gohman@apple.com> | 2009-03-09 20:46:50 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-03-09 20:46:50 +0000 |
commit | f7912df4cbdb44aeac9ac9907c192dfc1e22646d (patch) | |
tree | 0797f927b5e422abbcb2b53f876f68c0bc4fd660 | |
parent | 9f4ac31a9406c1f110e57b347689e15f64b33151 (diff) |
Move the sorting of the StrideOrder array earlier so that it doesn't
have to be done twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66449 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Scalar/LoopStrengthReduce.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index c89a4968c0..bab778832f 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -2147,7 +2147,6 @@ ICmpInst *LoopStrengthReduce::ChangeCompareStride(Loop *L, ICmpInst *Cond, Value *NewCmpRHS = NULL; int64_t Scale = 1; SCEVHandle NewOffset = SE->getIntegerSCEV(0, UIntPtrTy); - std::stable_sort(StrideOrder.begin(), StrideOrder.end(), StrideCompare()); if (ConstantInt *C = dyn_cast<ConstantInt>(Cond->getOperand(1))) { int64_t CmpVal = C->getValue().getSExtValue(); @@ -2611,6 +2610,9 @@ bool LoopStrengthReduce::runOnLoop(Loop *L, LPPassManager &LPM) { DEBUG(L->dump()); #endif + // Sort the StrideOrder so we process larger strides first. + std::stable_sort(StrideOrder.begin(), StrideOrder.end(), StrideCompare()); + // Optimize induction variables. Some indvar uses can be transformed to use // strides that will be needed for other purposes. A common example of this // is the exit test for the loop, which can often be rewritten to use the @@ -2629,9 +2631,6 @@ bool LoopStrengthReduce::runOnLoop(Loop *L, LPPassManager &LPM) { // IVsByStride keeps IVs for one particular loop. assert(IVsByStride.empty() && "Stale entries in IVsByStride?"); - // Sort the StrideOrder so we process larger strides first. - std::stable_sort(StrideOrder.begin(), StrideOrder.end(), StrideCompare()); - // Note: this processes each stride/type pair individually. All users // passed into StrengthReduceStridedIVUsers have the same type AND stride. // Also, note that we iterate over IVUsesByStride indirectly by using |