aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO/LoopExtractor.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-01-10 02:03:02 +0000
committerChris Lattner <sabre@nondot.org>2005-01-10 02:03:02 +0000
commit68dc3109420f38d639fb2e9fed6f1a29df60795b (patch)
tree8a3d68e3d7f565affc847022a9de71bdabbf2343 /lib/Transforms/IPO/LoopExtractor.cpp
parent87ae6ae41cde4548b55bcc19da36dc0ad7e021df (diff)
Implement a couple of more simplifications. This lets us codegen:
int test2(int * P, int* Q, int A, int B) { return P+A == P; } into: test2: movl 4(%esp), %eax movl 12(%esp), %eax shll $2, %eax cmpl $0, %eax sete %al movzbl %al, %eax ret instead of: test2: movl 4(%esp), %eax movl 12(%esp), %ecx leal (%eax,%ecx,4), %ecx cmpl %eax, %ecx sete %al movzbl %al, %eax ret ICC is producing worse code: test2: movl 4(%esp), %eax #8.5 movl 12(%esp), %edx #8.5 lea (%edx,%edx), %ecx #9.9 addl %ecx, %ecx #9.9 addl %eax, %ecx #9.9 cmpl %eax, %ecx #9.16 movl $0, %eax #9.16 sete %al #9.16 ret #9.16 as is GCC (looks like our old code): test2: movl 4(%esp), %edx movl 12(%esp), %eax leal (%edx,%eax,4), %ecx cmpl %edx, %ecx sete %al movzbl %al, %eax ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19430 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO/LoopExtractor.cpp')
0 files changed, 0 insertions, 0 deletions