OSDN Git Service

More aggressively sink GEP offsets into loops. For example, before we
authorChris Lattner <sabre@nondot.org>
Fri, 5 May 2006 21:17:49 +0000 (21:17 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 5 May 2006 21:17:49 +0000 (21:17 +0000)
commit903236468c3ebb3f9ae8f51b6f2e68f10c7e1d3a
tree0759ffb8dd38d127162984aaaf74c5163be1960c
parent581a7ad7c9e801522b6f137eebd8787e486292ef
More aggressively sink GEP offsets into loops.  For example, before we
generated:

        movl 8(%esp), %eax
        movl %eax, %edx
        addl $4316, %edx
        cmpb $1, %cl
        ja LBB1_2       #cond_false
LBB1_1: #cond_true
        movl L_QuantizationTables720$non_lazy_ptr, %ecx
        movl %ecx, (%edx)
        movl L_QNOtoQuantTableShift720$non_lazy_ptr, %edx
        movl %edx, 4460(%eax)
        ret
...

Now we generate:

        movl 8(%esp), %eax
        cmpb $1, %cl
        ja LBB1_2       #cond_false
LBB1_1: #cond_true
        movl L_QuantizationTables720$non_lazy_ptr, %ecx
        movl %ecx, 4316(%eax)
        movl L_QNOtoQuantTableShift720$non_lazy_ptr, %ecx
        movl %ecx, 4460(%eax)
        ret

... which uses one fewer register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28129 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp