[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