Factor out code that optimize loop terminating condition.
authorEvan Cheng <evan.cheng@apple.com>
Sat, 9 May 2009 01:08:24 +0000 (01:08 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sat, 9 May 2009 01:08:24 +0000 (01:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71305 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopStrengthReduce.cpp

index f441968d92d080117b58c8512b926759d30147ef..8d3240e062036a676bb6cf9453f49f31ef193939 100644 (file)
@@ -164,8 +164,11 @@ namespace {
     ICmpInst *ChangeCompareStride(Loop *L, ICmpInst *Cond,
                                   IVStrideUse* &CondUse,
                                   const SCEVHandle* &CondStride);
+
     void OptimizeIndvars(Loop *L);
 
+    void OptimizeLoopTermCond(Loop *L);
+
     /// OptimizeShadowIV - If IV is used in a int-to-float cast
     /// inside the loop then try to eliminate the cast opeation.
     void OptimizeShadowIV(Loop *L);
@@ -2378,6 +2381,12 @@ void LoopStrengthReduce::OptimizeIndvars(Loop *L) {
 
   OptimizeShadowIV(L);
 
+  OptimizeLoopTermCond(L);
+}
+
+/// OptimizeLoopTermCond - Change loop terminating condition to use the 
+/// postinc iv when possible.
+void LoopStrengthReduce::OptimizeLoopTermCond(Loop *L) {
   // Finally, get the terminating condition for the loop if possible.  If we
   // can, we want to change it to use a post-incremented version of its
   // induction variable, to allow coalescing the live ranges for the IV into