[llvm-commits] CVS: llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp

Chris Lattner lattner at cs.uiuc.edu
Sun Oct 2 17:37:44 PDT 2005



Changes in directory llvm/lib/Transforms/Scalar:

LoopStrengthReduce.cpp updated: 1.60 -> 1.61
---
Log message:

This break is bogus and I have no idea why it was there.  Basically it prevents
memoizing code when IV's are used by phinodes outside of loops.  In a simple
example, we were getting this code before (note that r6 and r7 are isomorphic
IV's):

        li r6, 0
        or r7, r6, r6
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        or r2, r7, r7
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r2, r7, 1
        addi r7, r7, 1
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit

Now we get:

        li r6, 0
LBB_test_3:     ; no_exit
        or r2, r6, r6
        lwz r6, 0(r3)
        cmpw cr0, r6, r5
        beq cr0, LBB_test_6     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r2, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit

this was noticed in em3d.



---
Diffs of the changes:  (+0 -1)

 LoopStrengthReduce.cpp |    1 -
 1 files changed, 1 deletion(-)


Index: llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
diff -u llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:1.60 llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:1.61
--- llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:1.60	Sun Oct  2 19:31:52 2005
+++ llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp	Sun Oct  2 19:37:33 2005
@@ -478,7 +478,6 @@
           BasicBlock *NewBB = PN->getIncomingBlock(i);
           NewBB->moveBefore(PN->getParent());
         }
-        break;
       }
 
       Value *&Code = InsertedCode[PN->getIncomingBlock(i)];






More information about the llvm-commits mailing list