re PR tree-optimization/49749 (Reassociation rank algorithm does not include all...
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 21 Jul 2011 18:07:39 +0000 (18:07 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Thu, 21 Jul 2011 18:07:39 +0000 (18:07 +0000)
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

gcc/ChangeLog
gcc/tree-ssa-reassoc.c

index b9d95fa5b6e9cbbd76fb5efdfd6216bba32e3495..023f4787586ce00193ca3345ce546c778a40299d 100644 (file)
@@ -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.
index d8f9e2ecf611a2e4b9937f1c42e8236983f83680..86d26fbcd0f638b9bec77e138afd5fc582ea83a1 100644 (file)
@@ -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)));