re PR middle-end/7796 (sparc-sun-solaris2.7 extra failure w/-m64 on execute/930921-1.c in unroll.c)

PR middle-end/7796
	* unroll.c (calculate_giv_inc): Handle constants being
	loaded with LSHIFTRT.

From-SVN: r63973
This commit is contained in:
Eric Botcazou 2003-03-08 08:42:41 +01:00 committed by Eric Botcazou
parent 892ed2606b
commit 45e0ebde97
2 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2003-03-08 Eric Botcazou <ebotcazou@libertysurf.fr>
PR middle-end/7796
* unroll.c (calculate_giv_inc): Handle constants being
loaded with LSHIFTRT.
2003-03-07 Eric Botcazou <ebotcazou@libertysurf.fr>
PR optimization/8726

View File

@ -1636,11 +1636,13 @@ calculate_giv_inc (pattern, src_insn, regno)
}
else if (GET_CODE (increment) == IOR
|| GET_CODE (increment) == PLUS
|| GET_CODE (increment) == ASHIFT
|| GET_CODE (increment) == PLUS)
|| GET_CODE (increment) == LSHIFTRT)
{
/* The rs6000 port loads some constants with IOR.
The alpha port loads some constants with ASHIFT and PLUS. */
The alpha port loads some constants with ASHIFT and PLUS.
The sparc64 port loads some constants with LSHIFTRT. */
rtx second_part = XEXP (increment, 1);
enum rtx_code code = GET_CODE (increment);
@ -1657,8 +1659,10 @@ calculate_giv_inc (pattern, src_insn, regno)
increment = GEN_INT (INTVAL (increment) | INTVAL (second_part));
else if (code == PLUS)
increment = GEN_INT (INTVAL (increment) + INTVAL (second_part));
else
else if (code == ASHIFT)
increment = GEN_INT (INTVAL (increment) << INTVAL (second_part));
else
increment = GEN_INT ((unsigned HOST_WIDE_INT) INTVAL (increment) >> INTVAL (second_part));
}
if (GET_CODE (increment) != CONST_INT)