[Bug target/88207] [9 regression] gcc.target/i386/pr22076.c etc. FAIL
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Nov 26 19:39:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88207
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|i?86-*-*, x86_64-*-* |i?86-*-*
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-11-26
Ever confirmed|0 |1
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
It is due to r266385, reported at [1]:
The PR22076 moves a value from mm0 via integer register to a volatile location:
movq .LC1, %mm0
paddb .LC0, %mm0
movq %mm0, 16(%esp)
movl 16(%esp), %eax
movl 20(%esp), %edx
movl %eax, (%esp)
movl %edx, 4(%esp)
movq (%esp), %mm0
addl $28, %esp
where before the patch we had:
movq .LC1, %mm0
paddb .LC0, %mm0
movq %mm0, 8(%esp)
movq 8(%esp), %mm0
addl $20, %esp
In PR81563 the compiler now saves the value on stack, while before the patch,
call-saved register was allocated for a value that lives across the call.
[1] https://gcc.gnu.org/ml/gcc-patches/2018-11/msg01975.html
More information about the Gcc-bugs
mailing list