summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-04-19 12:45:50 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-04-19 12:45:50 +0000
commite3ebd67ea81c57fbc3283972c99e51ff86ff5e79 (patch)
treeef8167d399bcefb98ccb39e50f46c63d3d94878a /gcc
parent6fd115145c0431e455ce8893bf3c672066c67fb2 (diff)
downloadgcc-e3ebd67ea81c57fbc3283972c99e51ff86ff5e79.tar.gz
Fix lossage caused by applying old version of my previous patch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33254 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/loop.c15
-rw-r--r--gcc/loop.h2
2 files changed, 9 insertions, 8 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index ac19372ee2a..91da78b3f95 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -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
diff --git a/gcc/loop.h b/gcc/loop.h
index 390c1ce4b7c..9c4affb8442 100644
--- a/gcc/loop.h
+++ b/gcc/loop.h
@@ -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));