aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-10-25 22:26:20 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-10-25 22:26:20 +0000
commit95d17cbf6da07f46e0d2a232bb5d102ed53c1855 (patch)
treefaff5a0d8130e0d5a404907f400799a1246e1203
parent6ea685b8571d933d66f45a5ed99f4b93367b0a44 (diff)
downloadgcc-95d17cbf6da07f46e0d2a232bb5d102ed53c1855.zip
gcc-95d17cbf6da07f46e0d2a232bb5d102ed53c1855.tar.gz
gcc-95d17cbf6da07f46e0d2a232bb5d102ed53c1855.tar.bz2
re PR rtl-optimization/46603 (gcc.dg/vect/slp-multitypes-2.c execution failure)
PR rtl-optimization/46603 * reload.c (push_reload): In the out case, reload the subreg as well as the reg if it has word mode. From-SVN: r180457
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload.c18
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c1
4 files changed, 14 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e6c69f2..06f8ca5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2011-10-25 Eric Botcazou <ebotcazou@adacore.com>
+ PR rtl-optimization/46603
+ * reload.c (push_reload): In the out case, reload the subreg as well
+ as the reg if it has word mode.
+
+2011-10-25 Eric Botcazou <ebotcazou@adacore.com>
+
* dwarf2out.c (add_gnat_descriptive_type_attribute): Temporarily
suppress debug info for the parent type.
diff --git a/gcc/reload.c b/gcc/reload.c
index 3ddc13e..5928660 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1117,10 +1117,10 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
/* Similarly for paradoxical and problematical SUBREGs on the output.
Note that there is no reason we need worry about the previous value
- of SUBREG_REG (out); even if wider than out,
- storing in a subreg is entitled to clobber it all
- (except in the case of STRICT_LOW_PART,
- and in that case the constraint should label it input-output.) */
+ of SUBREG_REG (out); even if wider than out, storing in a subreg is
+ entitled to clobber it all (except in the case of a word mode subreg
+ or of a STRICT_LOW_PART, in that latter case the constraint should
+ label it input-output.) */
if (out != 0 && GET_CODE (out) == SUBREG
&& (subreg_lowpart_p (out) || strict_low)
#ifdef CANNOT_CHANGE_MODE_CLASS
@@ -1142,16 +1142,6 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
/ UNITS_PER_WORD)))
#endif
))
- || (REG_P (SUBREG_REG (out))
- && REGNO (SUBREG_REG (out)) < FIRST_PSEUDO_REGISTER
- && ((GET_MODE_SIZE (outmode) <= UNITS_PER_WORD
- && (GET_MODE_SIZE (GET_MODE (SUBREG_REG (out)))
- > UNITS_PER_WORD)
- && ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (out)))
- / UNITS_PER_WORD)
- != (int) hard_regno_nregs[REGNO (SUBREG_REG (out))]
- [GET_MODE (SUBREG_REG (out))]))
- || ! HARD_REGNO_MODE_OK (subreg_regno (out), outmode)))
|| (secondary_reload_class (0, rclass, outmode, out) != NO_REGS
&& (secondary_reload_class (0, rclass, GET_MODE (SUBREG_REG (out)),
SUBREG_REG (out))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2696fb6..673e53a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/vect/slp-multitypes-2.c: Do not XFAIL on SPARC 32-bit.
+
2011-10-25 Jason Merrill <jason@redhat.com>
PR c++/50866
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
index 3c04b6d..ab2ed69 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
@@ -1,5 +1,4 @@
/* { dg-require-effective-target vect_int } */
-/* { dg-xfail-run-if "PR rtl-optimization/46603" { sparc*-*-* && { ilp32 && gas } } } */
#include <stdarg.h>
#include "tree-vect.h"