diff options
author | Jan Hubicka <hubicka@gcc.gnu.org> | 2000-04-19 12:45:50 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2000-04-19 12:45:50 +0000 |
commit | 82ee5e63a0e0d33db937b5b3ee94e10fcb4cbf5d (patch) | |
tree | ef8167d399bcefb98ccb39e50f46c63d3d94878a /gcc | |
parent | b9297e70ac910e77013c5700a56f652881da29bd (diff) | |
download | gcc-82ee5e63a0e0d33db937b5b3ee94e10fcb4cbf5d.zip gcc-82ee5e63a0e0d33db937b5b3ee94e10fcb4cbf5d.tar.gz gcc-82ee5e63a0e0d33db937b5b3ee94e10fcb4cbf5d.tar.bz2 |
Fix lossage caused by applying old version of my previous patch.
From-SVN: r33254
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/loop.c | 15 | ||||
-rw-r--r-- | gcc/loop.h | 2 |
2 files changed, 9 insertions, 8 deletions
@@ -308,8 +308,8 @@ static int replace_loop_reg PARAMS ((rtx *, void *)); static void note_reg_stored PARAMS ((rtx, rtx, void *)); static void try_copy_prop PARAMS ((const struct loop *, rtx, unsigned int)); static int replace_label PARAMS ((rtx *, void *)); -static void check_insn_for_givs PARAMS((struct loop *, rtx, int, int)); -static void check_insn_for_bivs PARAMS((struct loop *, rtx, int, int)); +static rtx check_insn_for_givs PARAMS((struct loop *, rtx, int, int)); +static rtx check_insn_for_bivs PARAMS((struct loop *, rtx, int, int)); typedef struct rtx_and_int { rtx r; @@ -3730,7 +3730,7 @@ for_each_insn_in_loop (loop, fncall) p != NULL_RTX; p = next_insn_in_loop (loop, p)) { - fncall (loop, p, maybe_multiple, not_every_iteration); + p = fncall (loop, p, not_every_iteration, not_every_iteration); /* Past CODE_LABEL, we get to insns that may be executed multiple times. The only way we can be sure that they can't is if every @@ -5068,7 +5068,7 @@ egress: } /*Record all basic induction variables calculated in the insn. */ -static void +static rtx check_insn_for_bivs (loop, p, not_every_iteration, maybe_multiple) struct loop *loop; rtx p; @@ -5112,12 +5112,13 @@ check_insn_for_bivs (loop, p, not_every_iteration, maybe_multiple) REG_IV_TYPE (REGNO (dest_reg)) = NOT_BASIC_INDUCT; } } + return p; } /* Record all givs calculated in the insn. A register is a giv if: it is only set once, it is a function of a biv and a constant (or invariant), and it is not a biv. */ -static void +static rtx check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple) struct loop *loop; rtx p; @@ -5141,7 +5142,7 @@ check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple) dest_reg = SET_DEST (set); if (REGNO (dest_reg) < FIRST_PSEUDO_REGISTER) - return; + return p; if (/* SET_SRC is a giv. */ (general_induction_var (loop, SET_SRC (set), &src_reg, &add_val, @@ -5196,7 +5197,7 @@ check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple) if (GET_CODE (p) == INSN || GET_CODE (p) == JUMP_INSN || GET_CODE (p) == CODE_LABEL) update_giv_derive (loop, p); - + return p; } /* Return 1 if X is a valid source for an initial value (or as value being @@ -247,6 +247,6 @@ void emit_unrolled_add PARAMS ((rtx, rtx, rtx)); int back_branch_in_range_p PARAMS ((const struct loop *, rtx)); int loop_insn_first_p PARAMS ((rtx, rtx)); -typedef void (*loop_insn_callback ) PARAMS ((struct loop *, rtx, int, int)); +typedef rtx (*loop_insn_callback ) PARAMS ((struct loop *, rtx, int, int)); void for_each_insn_in_loop PARAMS ((struct loop *, loop_insn_callback)); |