Move from Stage 0 to Stage 1.
authorChris Lattner <sabre@nondot.org>
Wed, 3 Aug 2005 22:51:21 +0000 (22:51 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 3 Aug 2005 22:51:21 +0000 (22:51 +0000)
commit2351abaeab89ef0a0df5a715d0794ed5dec48bb3
tree2a2c698936eb33bd6100285fcc6cff83ce016913
parentdc7c0b8c22fc6a20726c90529e95eeaed6b9f464
Move from Stage 0 to Stage 1.

Only emit one PHI node for IV uses with identical bases and strides (after
moving foldable immediates to the load/store instruction).

This implements LoopStrengthReduce/dont_insert_redundant_ops.ll, allowing
us to generate this PPC code for test1:

        or r30, r3, r3
.LBB_test1_1:   ; Loop
        li r2, 0
        stw r2, 0(r30)
        stw r2, 4(r30)
        bl L_pred$stub
        addi r30, r30, 8
        cmplwi cr0, r3, 0
        bne .LBB_test1_1        ; Loop

instead of this code:

        or r30, r3, r3
        or r29, r3, r3
.LBB_test1_1:   ; Loop
        li r2, 0
        stw r2, 0(r29)
        stw r2, 4(r30)
        bl L_pred$stub
        addi r30, r30, 8        ;; Two iv's with step of 8
        addi r29, r29, 8
        cmplwi cr0, r3, 0
        bne .LBB_test1_1        ; Loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22635 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/LoopStrengthReduce.cpp