diff options
author | Bill Schmidt <wschmidt@linux.vnet.ibm.com> | 2011-07-21 18:07:39 +0000 |
---|---|---|
committer | William Schmidt <wschmidt@gcc.gnu.org> | 2011-07-21 18:07:39 +0000 |
commit | 777a4e9acc49f2d98ab6e16de9a1b89f4f3bbd0a (patch) | |
tree | 8cc158808753e750c27deadc59431f29be7db986 /gcc | |
parent | d4add9520645abcfa2e1aabb71dfd1f8669f70ad (diff) | |
download | gcc-777a4e9acc49f2d98ab6e16de9a1b89f4f3bbd0a.zip gcc-777a4e9acc49f2d98ab6e16de9a1b89f4f3bbd0a.tar.gz gcc-777a4e9acc49f2d98ab6e16de9a1b89f4f3bbd0a.tar.bz2 |
re PR tree-optimization/49749 (Reassociation rank algorithm does not include all non-NULL operands)
2011-07-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/49749
* tree-ssa-reassoc.c (get_rank): Fix operand scan conditions and
remove no-longer-used maxrank variable.
From-SVN: r176581
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-reassoc.c | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b9d95fa..023f478 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + + PR tree-optimization/49749 + * tree-ssa-reassoc.c (get_rank): Fix operand scan conditions and + remove no-longer-used maxrank variable. + 2011-07-21 Georg-Johann Lay <avr@gjlay.de> * config/avr/avr.c (final_prescan_insn): Fix printing of rtx_costs. diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index d8f9e2e..86d26fb 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -235,7 +235,7 @@ get_rank (tree e) if (TREE_CODE (e) == SSA_NAME) { gimple stmt; - long rank, maxrank; + long rank; int i, n; if (TREE_CODE (SSA_NAME_VAR (e)) == PARM_DECL @@ -258,7 +258,6 @@ get_rank (tree e) /* Otherwise, find the maximum rank for the operands, or the bb rank, whichever is less. */ rank = 0; - maxrank = bb_rank[gimple_bb(stmt)->index]; if (gimple_assign_single_p (stmt)) { tree rhs = gimple_assign_rhs1 (stmt); @@ -267,15 +266,15 @@ get_rank (tree e) rank = MAX (rank, get_rank (rhs)); else { - for (i = 0; - i < n && TREE_OPERAND (rhs, i) && rank != maxrank; i++) - rank = MAX(rank, get_rank (TREE_OPERAND (rhs, i))); + for (i = 0; i < n; i++) + if (TREE_OPERAND (rhs, i)) + rank = MAX(rank, get_rank (TREE_OPERAND (rhs, i))); } } else { n = gimple_num_ops (stmt); - for (i = 1; i < n && rank != maxrank; i++) + for (i = 1; i < n; i++) { gcc_assert (gimple_op (stmt, i)); rank = MAX(rank, get_rank (gimple_op (stmt, i))); |