Commit 1f73ef6c by Nick Clifton Committed by Nick Clifton

re PR target/62254 (gcc-4.9 ICEs on linux kernel zlib for armv3)

	PR target/62254
	* config/arm/arm.c (arm_reload_out_hi): Add code to handle the
	case where we are already provided with an SImode SUBREG.

From-SVN: r234568
parent 41ec61d3
2016-03-30 Nick Clifton <nickc@redhat.com>
PR target/62254
* config/arm/arm.c (arm_reload_out_hi): Add code to handle the
case where we are already provided with an SImode SUBREG.
2016-03-30 Michael Matz <matz@suse.de> 2016-03-30 Michael Matz <matz@suse.de>
Richard Biener <rguenther@suse.de> Richard Biener <rguenther@suse.de>
......
...@@ -15596,14 +15596,27 @@ arm_reload_out_hi (rtx *operands) ...@@ -15596,14 +15596,27 @@ arm_reload_out_hi (rtx *operands)
/* The slot is out of range, or was dressed up in a SUBREG. */ /* The slot is out of range, or was dressed up in a SUBREG. */
base = reg_equiv_address (REGNO (ref)); base = reg_equiv_address (REGNO (ref));
/* PR 62554: If there is no equivalent memory location then just move /* PR 62254: If there is no equivalent memory location then just move
the value as an SImode register move. This happens when the target the value as an SImode register move. This happens when the target
architecture variant does not have an HImode register move. */ architecture variant does not have an HImode register move. */
if (base == NULL) if (base == NULL)
{ {
gcc_assert (REG_P (outval)); gcc_assert (REG_P (outval) || SUBREG_P (outval));
emit_insn (gen_movsi (gen_rtx_SUBREG (SImode, ref, 0),
gen_rtx_SUBREG (SImode, outval, 0))); if (REG_P (outval))
{
emit_insn (gen_movsi (gen_rtx_SUBREG (SImode, ref, 0),
gen_rtx_SUBREG (SImode, outval, 0)));
}
else /* SUBREG_P (outval) */
{
if (GET_MODE (SUBREG_REG (outval)) == SImode)
emit_insn (gen_movsi (gen_rtx_SUBREG (SImode, ref, 0),
SUBREG_REG (outval)));
else
/* FIXME: Handle other cases ? */
gcc_unreachable ();
}
return; return;
} }
} }
......
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