From 777a4e9acc49f2d98ab6e16de9a1b89f4f3bbd0a Mon Sep 17 00:00:00 2001
From: Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Date: Thu, 21 Jul 2011 18:07:39 +0000
Subject: [PATCH] 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
---
 gcc/ChangeLog          |  6 ++++++
 gcc/tree-ssa-reassoc.c | 11 +++++------
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b9d95fa5b6e9..023f4787586c 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 d8f9e2ecf611..86d26fbcd0f6 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)));
-- 
GitLab