diff options
author | Andreas Krebbel <krebbel@linux.vnet.ibm.com> | 2016-04-01 15:35:54 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2016-04-01 15:35:54 +0000 |
commit | e7067fcdb510d363ea8dd354eb6fe6d698a83240 (patch) | |
tree | 81dd991a8f867011f8cefeb6a79f31774158b318 | |
parent | 0f8754352485c6aaa6a6b85ce252585ae1eb31d7 (diff) | |
download | gcc-e7067fcdb510d363ea8dd354eb6fe6d698a83240.zip gcc-e7067fcdb510d363ea8dd354eb6fe6d698a83240.tar.gz gcc-e7067fcdb510d363ea8dd354eb6fe6d698a83240.tar.bz2 |
PR70404 S/390: Fix insv expansion.
While the expander accepts general_operand as src operand the risbg
pattern only immediate_operand. Unfortunately the expander called
force_reg only for VOIDmode constants missing things like
e.g. symbol_refs. Fixed with the attached patch.
gcc/ChangeLog:
2016-04-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/70404
* config/s390/s390.c (s390_expand_insv): Check for everything
constant instead of just VOIDmode stuff.
From-SVN: r234678
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0ac140..de3b8c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-04-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + PR target/70404 + * config/s390/s390.c (s390_expand_insv): Check for everything + constant instead of just VOIDmode stuff. + 2016-04-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> PR target/70496 diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 4f219be..1134d0f 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -6063,7 +6063,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src) { machine_mode mode_s = GET_MODE (src); - if (mode_s == VOIDmode) + if (CONSTANT_P (src)) { /* For constant zero values the representation with AND appears to be folded in more situations than the (set |