summaryrefslogtreecommitdiff
path: root/gcc/loop.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-07 22:26:37 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-07 22:26:37 +0000
commitff57e249d50d35ee6f637ac963bc70676e1dfc50 (patch)
tree07a0eb7b5b1bf4058491a8b16ec4c39423a361db /gcc/loop.h
parent1fcd08b185406bf47bb33b56a0ed3d343144f5d9 (diff)
downloadgcc-ff57e249d50d35ee6f637ac963bc70676e1dfc50.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36250 138bc75d-0d04-0410-961f-82ee72b054a4
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 7d4c7cea41a..1bc9a35ae63 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. */