diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/loop.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3f87f3f..58ec0ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Apr 7 11:58:04 1998 Jim Wilson <wilson@cygnus.com> + + * loop.c (check_dbra_loop): When normalize comparison_val, add check + to verify it is non-negative. + Tue Apr 7 02:01:47 1998 Richard Henderson <rth@cygnus.com> * alpha.c (alpha_expand_block_move): Correctly collect block offsets. @@ -6281,7 +6281,10 @@ check_dbra_loop (loop_end, insn_count, loop_start) && GET_CODE (initial_value) == CONST_INT) { comparison_val = comparison_val - INTVAL (bl->initial_value); - initial_value = const0_rtx; + /* Check for overflow. If comparison_val ends up as a + negative value, then we can't reverse the loop. */ + if (comparison_val >= 0) + initial_value = const0_rtx; } /* If the initial value is not zero, or if the comparison |