diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-12-14 21:34:53 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-12-14 21:34:53 +0000 |
commit | bbc726d6240f1d8480b312832eba5f7dd914fa4d (patch) | |
tree | 8caa8c34390a993f938bf109dbe5805040f1afff /lib/Target/ARM/ARMAsmBackend.cpp | |
parent | 8d6d7d6e30f3c90f92c5a12522d1500ca92299bf (diff) |
Fix a minor bug in two-address pass. It was missing a commute opportunity.
regB = move RCX
regA = op regB, regC
RAX = move regA
where both regB and regC are killed. If regB is constrainted to non-compatible
physical registers but regC is not constrainted at all, then it's better to
commute the instruction.
movl %edi, %eax
shlq $32, %rcx
leaq (%rcx,%rax), %rax
=>
movl %edi, %eax
shlq $32, %rcx
orq %rcx, %rax
rdar://8762995
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121793 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMAsmBackend.cpp')
0 files changed, 0 insertions, 0 deletions