diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/unroll.c | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77d23c1ce40..fc6d1efa11c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Mar 8 16:04:44 1999 Jim Wilson <wilson@cygnus.com> + + * unroll.c (loop_iterations): Only call loop_find_equiv_value if we + have a REG or SUBREG. + Mon Mar 8 15:27:42 1999 Jeffrey A Law (law@cygnus.com) * flow.c (merge_blocks_nomove): For HAVE_cc0 targets, make sure diff --git a/gcc/unroll.c b/gcc/unroll.c index 841f06a23d1..32ed5314370 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -3830,7 +3830,11 @@ loop_iterations (loop_start, loop_end, loop_info) if (GET_CODE (increment) != CONST_INT) { - increment = loop_find_equiv_value (loop_start, increment); + /* If we have a REG, check to see if REG holds a constant value. */ + /* ??? Other RTL, such as (neg (reg)) is possible here, but it isn't + clear if it is worthwhile to try to handle such RTL. */ + if (GET_CODE (increment) == REG || GET_CODE (increment) == SUBREG) + increment = loop_find_equiv_value (loop_start, increment); if (GET_CODE (increment) != CONST_INT) { |