S/390: PR69709 Fix risbg splitter
authorAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 26 Feb 2016 18:03:51 +0000 (18:03 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 26 Feb 2016 18:03:51 +0000 (18:03 +0000)
commit1d11f7ce7081fc9e28ac0a66c6b3f6b7950971d6
tree9bc7b45d701ee6fee291c17fa3c83a83afa07473
parent27d39ae1cca01885262fa267879f341c473110e3
S/390: PR69709 Fix risbg splitter

This fixes a wrong code generation problem with the splitters introduced
with that patch: https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01840.html

The target operand is used as temporary.  This fails if it matches the
source of the left shift which is read after writing the temporary.

Thanks to Dominik for debugging it and thanks to Richard for the fix!

Bootstrapped and regtested on s390x with-arch=z13.

Bye,

-Andreas-

gcc/ChangeLog:

2016-02-26  Richard Henderson  <rth@redhat.com>

PR target/69709
* config/s390/s390.md (risbg and risbgn splitters): Allocate new
pseudo in case the target rtx matches the source of the left
shift.

gcc/testsuite/ChangeLog:

2016-02-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/69709
* gcc.target/s390/pr69709.c: New test.

From-SVN: r233752
gcc/ChangeLog
gcc/config/s390/s390.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/pr69709.c [new file with mode: 0644]