]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR tree-optimization/15255 ([tree-ssa] a * 2 + a * 2 is not converted to a * 4)
authorRichard Guenther <rguenther@suse.de>
Wed, 13 Aug 2008 08:57:20 +0000 (08:57 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 13 Aug 2008 08:57:20 +0000 (08:57 +0000)
commit25c6036a5bc49ba73bc3f5d2573cf2506b513a1f
treeb8a064a0f6159ca9ca85a74e1d5e760278c524c7
parent92464a8a7a6f5404b71b00acdd04cd2754d6b100
re PR tree-optimization/15255 ([tree-ssa] a * 2 + a * 2 is not converted to a * 4)

2008-08-13  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/15255
* tree-ssa-reassoc.c (linearize_expr_tree): Declare.
(struct oecount_s): New struct and VEC types.
(cvec): New global.
(oecount_hash): New function.
(oecount_eq): Likewise.
(oecount_cmp): Likewise.
(zero_one_operation): New function.
(build_and_add_sum): Likewise.
(undistribute_ops_list): Perform un-distribution of multiplication
and division on the chain of summands.
(should_break_up_subtract): Also break up subtracts for factors.
(reassociate_bb): Delete dead visited statements.
Call undistribute_ops_list.  Re-sort and optimize if it did something.
* passes.c (init_optimization_passes): Move DSE before
reassociation.
* tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
PHI nodes.

* gcc.dg/tree-ssa/reassoc-14.c: New testcase.
* gcc.dg/tree-ssa/reassoc-15.c: Likewise.
* gcc.dg/tree-ssa/reassoc-16.c: Likewise.
* gcc.dg/torture/reassoc-1.c: Likewise.
* gcc.dg/tree-ssa/recip-2.c: Adjust.
* gcc.dg/tree-ssa/recip-6.c: Likewise.
* gcc.dg/tree-ssa/recip-7.c: Likewise.
* gfortran.dg/reassoc_4.f: Likewise.

From-SVN: r139048
15 files changed:
gcc/ChangeLog
gcc/passes.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/reassoc-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/reassoc-14.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/reassoc-15.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/reassoc-16.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/reassoc-17.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/reassoc-18.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
gcc/testsuite/gcc.dg/tree-ssa/recip-7.c
gcc/testsuite/gfortran.dg/reassoc_4.f [new file with mode: 0644]
gcc/tree-ssa-loop-niter.c
gcc/tree-ssa-reassoc.c