https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104704

--- Comment #14 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:609e8c492d62d92465460eae3d43dfc4b2c68288

commit r12-7472-g609e8c492d62d92465460eae3d43dfc4b2c68288
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Sat Feb 26 14:17:23 2022 -0800

    x86: Always return pseudo register in ix86_gen_scratch_sse_rtx

    ix86_gen_scratch_sse_rtx returns XMM7/XMM15/XMM31 as a scratch vector
    register to prevent RTL optimizers from removing vector register.  It
    introduces a conflict with explicit XMM7/XMM15/XMM31 usage and when it
    is called by RTL optimizers, it may introduce conflicting usages of
    XMM7/XMM15/XMM31.

    Change ix86_gen_scratch_sse_rtx to always return a pseudo register and
    xfail x86 tests which are optimized with a hard scratch register.

    gcc/

            PR target/104704
            * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Always return
            a pseudo register.

    gcc/testsuite/

            PR target/104704
            * gcc.target/i386/incoming-11.c: Xfail.
            * gcc.target/i386/pieces-memset-3.c: Likewise.
            * gcc.target/i386/pieces-memset-37.c: Likewise.
            * gcc.target/i386/pieces-memset-39.c: Likewise.
            * gcc.target/i386/pieces-memset-46.c: Likewise.
            * gcc.target/i386/pieces-memset-47.c: Likewise.
            * gcc.target/i386/pieces-memset-48.c: Likewise.
            * gcc.target/i386/pr90773-5.c: Likewise.
            * gcc.target/i386/pr90773-14.c: Likewise.
            * gcc.target/i386/pr90773-17.c: Likewise.
            * gcc.target/i386/pr100865-8a.c: Likewise.
            * gcc.target/i386/pr100865-8c.c: Likewise.
            * gcc.target/i386/pr100865-9c.c: Likewise.
            * gcc.target/i386/pieces-memset-21.c: Always expect vzeroupper.
            * gcc.target/i386/pr82941-1.c: Likewise.
            * gcc.target/i386/pr82942-1.c: Likewise.
            * gcc.target/i386/pr82990-1.c: Likewise.
            * gcc.target/i386/pr82990-3.c: Likewise.
            * gcc.target/i386/pr82990-5.c: Likewise.
            * gcc.target/i386/pr100865-11b.c: Expect vmovdqa instead of
            vmovdqa64.
            * gcc.target/i386/pr100865-12b.c: Likewise.
            * gcc.target/i386/pr100865-8b.c: Likewise.
            * gcc.target/i386/pr100865-9b.c: Likewise.
            * gcc.target/i386/pr104704-1.c: New test.
            * gcc.target/i386/pr104704-2.c: Likewise.
            * gcc.target/i386/pr104704-3.c: Likewise.
            * gcc.target/i386/pr104704-4.c: Likewise.
            * gcc.target/i386/pr104704-5.c: Likewise.
            * gcc.target/i386/pr104704-6.c: Likewise.

Reply via email to