[Bug target/82682] [8 Regression] FAIL: gcc.target/i386/pr50038.c scan-assembler-times movzbl 2 (found 3 times) since r253958
hubicka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Nov 19 16:13:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82682
--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
We now generate:
.L3:
movzbl (%edx), %esi
addl $2, %edx
addl $1, %ecx
movzbl -1(%edx), %eax
movl %esi, %ebx
imull $38470, %eax, %eax
movzbl %bl, %esi
imull $19595, %esi, %esi
addl %esi, %eax
sarl $16, %eax
movb %al, -1(%ecx)
cmpl %edi, %edx
jne .L3
while from older gcc I get
.L3:
movzbl (%ecx,%edx,2), %eax
movzbl 1(%ecx,%edx,2), %edi
imull $19595, %eax, %eax
imull $38470, %edi, %edi
addl %edi, %eax
sarl $16, %eax
movb %al, (%esi,%edx)
addl $1, %edx
cmpl %edx, %ebx
jne .L3
.L1:
There is clearly missed optimization on movzbl $bl, esi because it is already
extended.
I wonder how this can be triggered by the move cost changes, perhaps regalloc
difference?
Jakub, it is easy for you to get .s files from r253958 and just before?
More information about the Gcc-bugs
mailing list