diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 71e20bdee08..c68252e7544 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Mar 8 18:47:11 1999 J"orn Rennecke + + * regmove.c (copy_src_to_dest): New argument max_old_uid. + Mon Mar 8 08:23:00 1999 Bruce Korb * ChangeLog: merged entries from fixincl-branch diff --git a/gcc/regmove.c b/gcc/regmove.c index 8cc913a52c2..658f9d40239 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -43,7 +43,7 @@ static int optimize_reg_copy_1 PROTO((rtx, rtx, rtx)); static void optimize_reg_copy_2 PROTO((rtx, rtx, rtx)); static void optimize_reg_copy_3 PROTO((rtx, rtx, rtx)); static rtx gen_add3_insn PROTO((rtx, rtx, rtx)); -static void copy_src_to_dest PROTO((rtx, rtx, rtx, int)); +static void copy_src_to_dest PROTO((rtx, rtx, rtx, int, int)); static int *regmove_bb_head; struct match { @@ -744,11 +744,12 @@ optimize_reg_copy_3 (insn, dest, src) instead moving the value to dest directly before the operation. */ static void -copy_src_to_dest (insn, src, dest, loop_depth) +copy_src_to_dest (insn, src, dest, loop_depth, old_max_uid) rtx insn; rtx src; rtx dest; int loop_depth; + int old_max_uid; { rtx seq; rtx link; @@ -820,11 +821,14 @@ copy_src_to_dest (insn, src, dest, loop_depth) /* Is the insn the head of a basic block? If so extend it */ insn_uid = INSN_UID (insn); move_uid = INSN_UID (move_insn); - bb = regmove_bb_head[insn_uid]; - if (bb >= 0) + if (insn_uid < old_max_uid) { - BLOCK_HEAD (bb) = move_insn; - regmove_bb_head[insn_uid] = -1; + bb = regmove_bb_head[insn_uid]; + if (bb >= 0) + { + BLOCK_HEAD (bb) = move_insn; + regmove_bb_head[insn_uid] = -1; + } } /* Update the various register tables. */ @@ -1534,7 +1538,8 @@ regmove_optimize (f, nregs, regmove_dump_file) /* If we weren't able to replace any of the alternatives, try an alternative appoach of copying the source to the destination. */ if (!success && copy_src != NULL_RTX) - copy_src_to_dest (insn, copy_src, copy_dst, loop_depth); + copy_src_to_dest (insn, copy_src, copy_dst, loop_depth, + old_max_uid); } }