diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 68c777dcbb2..e27249ea867 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sun Feb 8 14:56:03 1998 Richard Kenner + + * loop.c (strength_reduce): When placing increment for auto-inc + case, do comparison in loop order. + Sun Feb 8 13:21:38 1998 John Carr * bitmap.c (bitmap_debug_file): HOST_PTR_PRINTF converts a pointer, diff --git a/gcc/loop.c b/gcc/loop.c index 6aa748561b4..bc6d4f7f553 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -4114,8 +4114,14 @@ strength_reduce (scan_start, end, loop_top, insn_count, auto_inc_opt = 1; } /* Check for case where increment is before the the address - giv. */ - else if (INSN_LUID (v->insn) > INSN_LUID (bl->biv->insn)) + giv. Do this test in "loop order". */ + else if ((INSN_LUID (v->insn) > INSN_LUID (bl->biv->insn) + && (INSN_LUID (v->insn) < INSN_LUID (scan_start) + || (INSN_LUID (bl->biv->insn) + > INSN_LUID (scan_start)))) + || (INSN_LUID (v->insn) < INSN_LUID (scan_start) + && (INSN_LUID (scan_start) + < INSN_LUID (bl->biv->insn)))) auto_inc_opt = -1; else auto_inc_opt = 1;