aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-04-13 20:30:56 +0000
committerChris Lattner <sabre@nondot.org>2007-04-13 20:30:56 +0000
commitdd77df3cbc2301c14f56c9d2cfd412a032c27241 (patch)
treed34ee5731f259c3347a31994478b6e15e343f0c7 /test
parentd617d39f746549bb9f6891ef53aa34c9e1a67a70 (diff)
downloadexternal_llvm-dd77df3cbc2301c14f56c9d2cfd412a032c27241.tar.gz
external_llvm-dd77df3cbc2301c14f56c9d2cfd412a032c27241.tar.bz2
external_llvm-dd77df3cbc2301c14f56c9d2cfd412a032c27241.zip
Completely rewrite addressing-mode related sinking of code. In particular,
this fixes problems where codegenprepare would sink expressions into load/stores that are not valid, and fixes cases where it would miss important valid ones. This fixes several serious codesize and perf issues, particularly on targets with complex addressing modes like arm and x86. For example, now we compile CodeGen/X86/isel-sink.ll to: _test: movl 8(%esp), %eax movl 4(%esp), %ecx cmpl $1233, %eax ja LBB1_2 #F LBB1_1: #T movl $4, (%ecx,%eax,4) movl $141, %eax ret LBB1_2: #F movl (%ecx,%eax,4), %eax ret instead of: _test: movl 8(%esp), %eax leal (,%eax,4), %ecx addl 4(%esp), %ecx cmpl $1233, %eax ja LBB1_2 #F LBB1_1: #T movl $4, (%ecx) movl $141, %eax ret LBB1_2: #F movl (%ecx), %eax ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35970 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions