gimple-ssa-strength-reduction.c (find_phi_def): Revert former "fix."
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Wed, 8 May 2013 12:22:32 +0000 (12:22 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Wed, 8 May 2013 12:22:32 +0000 (12:22 +0000)
2013-05-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gimple-ssa-strength-reduction.c (find_phi_def): Revert former "fix."
(alloc_cand_and_find_basis): Restrict conditional candidate
processing to CAND_MULTs.

From-SVN: r198709

gcc/ChangeLog
gcc/gimple-ssa-strength-reduction.c

index 452b1e202320589af3428f42a9301b1504b2f5a9..573dbbafb1a60121cadac04695b3b976f3d6090b 100644 (file)
@@ -1,3 +1,9 @@
+2013-05-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * gimple-ssa-strength-reduction.c (find_phi_def): Revert former "fix."
+       (alloc_cand_and_find_basis): Restrict conditional candidate
+       processing to CAND_MULTs.
+
 2013-05-08  Jan Hubicka  <jh@suse.cz>
 
        PR lto/54095
index 2a2c6158df1e6f99f40a3944e98dd6a33026b90e..650ea19d63f88bfed32b6ba21b17f8212d643a02 100644 (file)
@@ -415,32 +415,16 @@ cand_chain_hasher::equal (const value_type *chain1, const compare_type *chain2)
 static hash_table <cand_chain_hasher> base_cand_map;
 \f
 /* Look in the candidate table for a CAND_PHI that defines BASE and
-   return it if found; otherwise return NULL.  GS is the candidate
-   statement with BASE, INDEX, and STRIDE.  If GS is a CAND_ADD with
-   an index of 1 and an SSA name for STRIDE, we must be careful that
-   we haven't commuted the operands for this candidate.  STRIDE must
-   correspond to the second addend of GS for the eventual transformation
-   to be legal.  If not, return NULL.  */
+   return it if found; otherwise return NULL.  */
 
 static cand_idx
-find_phi_def (gimple gs, enum cand_kind kind, tree base,
-              double_int index, tree stride)
+find_phi_def (tree base)
 {
   slsr_cand_t c;
 
   if (TREE_CODE (base) != SSA_NAME)
     return 0;
 
-  /* If we've commuted the operands (so "y + z" is represented as
-     "z + (1 * y)"), we don't have the pattern we're looking for.
-     Bail out to avoid doing a wrong replacement downstream.  */
-  if (kind == CAND_ADD
-      && index.is_one ()
-      && TREE_CODE (stride) == SSA_NAME
-      && gimple_assign_rhs_code (gs) == PLUS_EXPR
-      && stride != gimple_assign_rhs2 (gs))
-    return 0;
-  
   c = base_cand_from_table (base);
 
   if (!c || c->kind != CAND_PHI)
@@ -583,7 +567,7 @@ alloc_cand_and_find_basis (enum cand_kind kind, gimple gs, tree base,
   c->next_interp = 0;
   c->dependent = 0;
   c->sibling = 0;
-  c->def_phi = find_phi_def (gs, kind, base, index, stride);
+  c->def_phi = kind == CAND_MULT ? find_phi_def (base) : 0;
   c->dead_savings = savings;
 
   cand_vec.safe_push (c);