diff options
author | Richard Henderson <rth@cygnus.com> | 1998-07-17 07:46:06 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-07-17 07:46:06 -0700 |
commit | 45f97e2e08b016d585fd38f932ee7d2ca9302acf (patch) | |
tree | adf0dd2a995e73cabb5b041099bb2f890e671cc9 /gcc/loop.h | |
parent | d4c011bca5e830092dd9d694f1dd53665349cf46 (diff) | |
download | gcc-45f97e2e08b016d585fd38f932ee7d2ca9302acf.zip gcc-45f97e2e08b016d585fd38f932ee7d2ca9302acf.tar.gz gcc-45f97e2e08b016d585fd38f932ee7d2ca9302acf.tar.bz2 |
loop.h (struct induction): Add no_const_addval.
* loop.h (struct induction): Add no_const_addval.
* loop.c (the_movables, reg_address_cost): New variables.
(init_loop): Init reg_address_cost.
(loop_optimize): Call end_alias_analysis.
(scan_loop): Init the_movables.
(record_giv): Init induction->no_const_addval.
(basic_induction_var) [PLUS]: Use rtx_equal_p instead of ==.
[REG]: Rearrange loop search test to catch more cases.
(general_induction_var): Return success not benefit; take an extra
argument for that. Change all callers.
(simplify_giv_expr) [PLUS]: Always combine invariants. Use sge_plus.
[MULT]: Use rtx_equal_p instead of ==. Combine simple invariants.
[default]: Search the_movables for additional combinations.
(sge_plus_constant, sge_plus): New functions.
(express_from_1): New function.
(express_from): Always define. Rewrite using express_from_1.
(combine_givs_p): Handle more cases. Ignore address cost.
(cmp_combine_givs_stats): New function.
(combine_givs_used_once, combine_givs_benefit_from): New functions.
(combine_givs): Rewrite to do best-fit combination.
* fold-const.c (operand_equal_p): Handle RTL_EXPR.
(fold): Do a complete (A*C)+(B*C) association check.
From-SVN: r21263
Diffstat (limited to 'gcc/loop.h')
-rw-r--r-- | gcc/loop.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -95,6 +95,7 @@ struct induction unsigned unrolled : 1; /* 1 if new register has been allocated and initialized in unrolled loop. */ unsigned shared : 1; + unsigned no_const_addval : 1; /* 1 if add_val does not contain a const. */ int lifetime; /* Length of life of this giv */ int times_used; /* # times this giv is used. */ rtx derive_adjustment; /* If nonzero, is an adjustment to be |