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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:cd8b4fae52d02541c2d8bd2200caad3812f37368

commit r13-6147-gcd8b4fae52d02541c2d8bd2200caad3812f37368
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Mon Feb 20 22:07:57 2023 +0100

    powerpc: Another umaddditi4 fix [PR108862]

    The following testcase is miscompiled on powerpc64le-linux with
    -O2 -mcpu=power9.  The problem is that gen_umaddditi4 is called with
    the same TImode register for both op0 and op3, and maddlddi4
    overwrites the low half of op0 before the low half of op3 is read,
    so when they are the same register it reads the result of maddlddi4.

    The following patch fixes that by swapping maddlddi4 and
    umadddi4_highpart{,_le} during expansion, as the latter writes into
    a temporary pseudo and so can't change anything maddlddi4 depends on.

    2023-02-20  Jakub Jelinek  <jakub2redhat.com>

            PR target/108862
            * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
            gen_umadddi4_highpart{,_le}.

            * gcc.dg/pr108862.c: New test.
            * gcc.target/powerpc/pr108862.c: New test.

Reply via email to