]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR70404 S/390: Fix insv expansion.
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Apr 2016 15:35:54 +0000 (15:35 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Apr 2016 15:35:54 +0000 (15:35 +0000)
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: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234678 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/s390.c

index b0ac14078979b6fd435a96d45bf827fa1e22cd52..de3b8c575434954f5c5f4fbf9ef3819e719c84ba 100644 (file)
@@ -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
index 4f219bee17d0eb9c9e65ca10554cd2fcaff1c457..1134d0f1e9dcbac6d566a51ca9f20320f9b2b686 100644 (file)
@@ -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