gcc:
commitac70caaded6c0f5df39f9bd7e2ed9c7f82a8dbd4
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Jan 2006 13:02:18 +0000 (11 13:02 +0000)
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Jan 2006 13:02:18 +0000 (11 13:02 +0000)
tree727cbd4df49eeb348d4444be887d342d20481475
parente011eba9edce426cbde12b0b43cd4b274b2172d0
gcc:
2006-01-11  Paolo Bonzini  <bonzini@gnu.org>

PR tree-optimization/23109
PR tree-optimization/23948
PR tree-optimization/24123

* Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
        * tree-cfg.c (single_noncomplex_succ): New.
        * tree-flow.h (single_noncomplex_succ): Declare it.
        * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
        * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
        (struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
insert_bb, register_division_in, insert_reciprocals,
replace_reciprocal, free_bb): New.
        (execute_cse_reciprocals_1): Rewritten.
        (execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
        Do not commit any edge insertion.  Always compute dominators and
        create the allocation pool.
        * target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
* target.h (struct gcc_target): Add min_divistions_for_recip_mul.
* targhooks.c (default_min_divistions_for_recip_mul): New.
* targhooks.h (default_min_divistions_for_recip_mul): New prototype.
        * passes.c (init_optimization_passes): Run recip after tree loop
        optimizations.
        * doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.

gcc/testsuite:
2006-01-11  Paolo Bonzini  <bonzini@gnu.org>

        PR tree-optimization/23109
        PR tree-optimization/23948
        PR tree-optimization/24123

        * gcc.dg/tree-ssa/recip-3.c, gcc.dg/tree-ssa/recip-4.c,
        gcc.dg/tree-ssa/recip-5.c, gcc.dg/tree-ssa/recip-6.c,
        gcc.dg/tree-ssa/recip-7.c, gcc.dg/tree-ssa/pr23109.c,
        g++.dg/tree-ssa/pr23948.C: New testcases.
        * gcc.dg/tree-ssa/recip-2.c, gcc.dg/tree-ssa/pr23234.c: Provide
three divisions in order to do the optimization.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109578 138bc75d-0d04-0410-961f-82ee72b054a4
21 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/doc/tm.texi
gcc/passes.c
gcc/target-def.h
gcc/target.h
gcc/targhooks.c
gcc/targhooks.h
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr23948.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/pr23109.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/pr23234.c
gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
gcc/testsuite/gcc.dg/tree-ssa/recip-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/recip-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/recip-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/recip-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/recip-7.c [new file with mode: 0644]
gcc/tree-cfg.c
gcc/tree-flow.h
gcc/tree-ssa-math-opts.c