diff options
author | Chris Lattner <sabre@nondot.org> | 2005-10-03 00:37:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-10-03 00:37:33 +0000 |
commit | 360928dbed032416b7fc1e740a9d53c9119a675c (patch) | |
tree | d8a14846018fdb55a6af08fe9b260aacf9bc2bf6 /llvm/lib/Transforms/Utils/DemoteRegToStack.cpp | |
parent | 8fcce170cf0d3c2a49b48f6dced0a4a63ce3f97c (diff) | |
download | llvm-360928dbed032416b7fc1e740a9d53c9119a675c.zip llvm-360928dbed032416b7fc1e740a9d53c9119a675c.tar.gz llvm-360928dbed032416b7fc1e740a9d53c9119a675c.tar.bz2 |
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.
llvm-svn: 23602
Diffstat (limited to 'llvm/lib/Transforms/Utils/DemoteRegToStack.cpp')
0 files changed, 0 insertions, 0 deletions