Index: flow.c =================================================================== RCS file: /cvs/gcc/egcs/gcc/flow.c,v retrieving revision 1.324 diff -u -r1.324 flow.c --- flow.c 2000/08/14 05:59:49 1.324 +++ flow.c 2000/08/15 14:35:30 @@ -5562,11 +5562,13 @@ * INTVAL (XEXP (SET_SRC (x), 1))); int regno = REGNO (SET_DEST (x)); rtx y = pbi->reg_next_use[regno]; + if (y != 0 && BLOCK_NUM (y) == BLOCK_NUM (insn) - /* Don't do this if the reg dies, or gets set in y; a standard addressing - mode would be better. */ - && ! dead_or_set_p (y, SET_DEST (x)) + /* We cannot use pre-increment if y clobbers the register REGNO. + We can still consider a register that is not used after y, + hoping pre-increment is faster than indexed addressing. */ + && ! reg_set_p (SET_DEST (x), y) && try_pre_increment (y, SET_DEST (x), amount)) { /* We have found a suitable auto-increment