Skip to content
  • Chris Lattner's avatar
    This break is bogus and I have no idea why it was there. Basically it prevents · 360928db
    Chris Lattner authored
    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.
    
    llvm-svn: 23602
    360928db
Loading