aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2016-04-01 15:35:54 +0000
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2016-04-01 15:35:54 +0000
commit87470fdf250ac72fe19ed6d09994531e97ff203e (patch)
tree81dd991a8f867011f8cefeb6a79f31774158b318
parentd24bcaebfcf34fe2a6755e441cc7c19ea0eb0ed7 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@234678 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b0ac1407897..de3b8c57543 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 4f219bee17d..1134d0f1e9d 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