Commit 95d17cbf by Eric Botcazou Committed by Eric Botcazou

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
parent 6ea685b8
2011-10-25 Eric Botcazou <ebotcazou@adacore.com> 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 * dwarf2out.c (add_gnat_descriptive_type_attribute): Temporarily
suppress debug info for the parent type. suppress debug info for the parent type.
...@@ -1117,10 +1117,10 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, ...@@ -1117,10 +1117,10 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
/* Similarly for paradoxical and problematical SUBREGs on the output. /* Similarly for paradoxical and problematical SUBREGs on the output.
Note that there is no reason we need worry about the previous value Note that there is no reason we need worry about the previous value
of SUBREG_REG (out); even if wider than out, of SUBREG_REG (out); even if wider than out, storing in a subreg is
storing in a subreg is entitled to clobber it all entitled to clobber it all (except in the case of a word mode subreg
(except in the case of STRICT_LOW_PART, or of a STRICT_LOW_PART, in that latter case the constraint should
and in that case the constraint should label it input-output.) */ label it input-output.) */
if (out != 0 && GET_CODE (out) == SUBREG if (out != 0 && GET_CODE (out) == SUBREG
&& (subreg_lowpart_p (out) || strict_low) && (subreg_lowpart_p (out) || strict_low)
#ifdef CANNOT_CHANGE_MODE_CLASS #ifdef CANNOT_CHANGE_MODE_CLASS
...@@ -1142,16 +1142,6 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, ...@@ -1142,16 +1142,6 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
/ UNITS_PER_WORD))) / UNITS_PER_WORD)))
#endif #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, outmode, out) != NO_REGS
&& (secondary_reload_class (0, rclass, GET_MODE (SUBREG_REG (out)), && (secondary_reload_class (0, rclass, GET_MODE (SUBREG_REG (out)),
SUBREG_REG (out)) SUBREG_REG (out))
......
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> 2011-10-25 Jason Merrill <jason@redhat.com>
PR c++/50866 PR c++/50866
......
/* { dg-require-effective-target vect_int } */ /* { dg-require-effective-target vect_int } */
/* { dg-xfail-run-if "PR rtl-optimization/46603" { sparc*-*-* && { ilp32 && gas } } } */
#include <stdarg.h> #include <stdarg.h>
#include "tree-vect.h" #include "tree-vect.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment