diff options
author | Richard Henderson <rth@gcc.gnu.org> | 2000-09-07 15:26:37 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-09-07 15:26:37 -0700 |
commit | e8cb4873840fae2708dc58c13fbb9ff1e7bc1bc9 (patch) | |
tree | 07a0eb7b5b1bf4058491a8b16ec4c39423a361db /gcc/loop.h | |
parent | 8b97c5f8ef218afce7499abe8cd3e6eb1f729306 (diff) | |
download | gcc-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.h | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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. */ |