loop.h (struct induction): Add no_const_addval.
authorRichard Henderson <rth@cygnus.com>
Fri, 17 Jul 1998 14:46:06 +0000 (07:46 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 17 Jul 1998 14:46:06 +0000 (07:46 -0700)
commit45f97e2e08b016d585fd38f932ee7d2ca9302acf
treeadf0dd2a995e73cabb5b041099bb2f890e671cc9
parentd4c011bca5e830092dd9d694f1dd53665349cf46
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
gcc/ChangeLog
gcc/fold-const.c
gcc/loop.c
gcc/loop.h