From: Eric Botcazou Date: Sat, 8 Mar 2003 07:42:41 +0000 (+0100) Subject: re PR middle-end/7796 (sparc-sun-solaris2.7 extra failure w/-m64 on execute/930921... X-Git-Tag: releases/gcc-3.2.3~136 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45e0ebde97a1910c73020d6770f65415cdce77eb;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c76147bf7c57..ccdb5c812039 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-03-08 Eric Botcazou + + PR middle-end/7796 + * unroll.c (calculate_giv_inc): Handle constants being + loaded with LSHIFTRT. + 2003-03-07 Eric Botcazou PR optimization/8726 diff --git a/gcc/unroll.c b/gcc/unroll.c index 83327c7ba4cf..b9232274add6 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -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)