On 02/05/2016 01:10 PM, Richard Biener wrote:
It fails
FAIL: gcc.target/i386/addr-sel-1.c scan-assembler b\\\\+1
on i?86 (or x86_64 -m32) though, generating
f:
.LFB0:
.cfi_startproc
movl 4(%esp), %eax
leal 1(%eax), %edx
movsbl a+1(%eax), %eax
movsbl b(%edx), %edx
addl %edx, %eax
ret
Well, it looks like the first movsbl load clobbers the potentially
better base register, so trivial propagation doesn't work.
It might be another case where allowing 2->2 in combine would help. Or
enabling -frename-registers and rerunning reload_combine afterwards.
Bernd