aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>2000-09-07 15:26:37 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-07 15:26:37 -0700
commite8cb4873840fae2708dc58c13fbb9ff1e7bc1bc9 (patch)
tree07a0eb7b5b1bf4058491a8b16ec4c39423a361db /gcc/loop.h
parent8b97c5f8ef218afce7499abe8cd3e6eb1f729306 (diff)
downloadgcc-e8cb4873840fae2708dc58c13fbb9ff1e7bc1bc9.zip
gcc-e8cb4873840fae2708dc58c13fbb9ff1e7bc1bc9.tar.gz
gcc-e8cb4873840fae2708dc58c13fbb9ff1e7bc1bc9.tar.bz2
loop.c (strength_reduce): Call check_ext_dependant_givs.
* loop.c (strength_reduce): Call check_ext_dependant_givs. Properly extend the biv initial value for the giv. (record_biv): Zero ext_dependant. (record_giv): New argument ext_val. Update all callers. (general_induction_var): Likewise. (consec_sets_giv): Likewise. (simplify_giv_expr): Likewise. Fill in ext_val if we find a sign-extend, zero-extend, or truncate. (combine_givs_p): Make sure modes are compatible. (check_ext_dependant_givs): New. (extend_value_for_giv): New. * loop.h (struct induction): Add ext_dependant. * unroll.c (iteration_info): Extend the biv initial value for the giv. (find_splittable_givs): Likewise. (final_giv_value): Likewise. From-SVN: r36250
Diffstat (limited to 'gcc/loop.h')
-rw-r--r--gcc/loop.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/loop.h b/gcc/loop.h
index 7d4c7ce..1bc9a35 100644
--- a/gcc/loop.h
+++ b/gcc/loop.h
@@ -115,6 +115,8 @@ struct induction
subtracted from add_val when this giv
derives another. This occurs when the
giv spans a biv update by incrementation. */
+ rtx ext_dependant; /* If nonzero, is a sign or zero extension
+ if a biv on which this giv is dependant. */
struct induction *next_iv; /* For givs, links together all givs that are
based on the same biv. For bivs, links
together all biv entries that refer to the
@@ -238,6 +240,7 @@ int loop_invariant_p PARAMS ((const struct loop *, rtx));
rtx get_condition_for_loop PARAMS ((const struct loop *, rtx));
void emit_iv_add_mult PARAMS ((rtx, rtx, rtx, rtx, rtx));
rtx express_from PARAMS ((struct induction *, struct induction *));
+rtx extend_value_for_giv PARAMS ((struct induction *, rtx));
void unroll_loop PARAMS ((struct loop *, int, rtx, int));
rtx biv_total_increment PARAMS ((struct iv_class *));
@@ -251,7 +254,7 @@ 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 rtx (*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));
/* Forward declarations for non-static functions declared in doloop.c. */