aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>2013-05-08 12:22:32 +0000
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>2013-05-08 12:22:32 +0000
commit2c4fc5c29b94c1dc4f7d6458d68991b7b263fe7c (patch)
treea2cb2330f387a1b6ae68a01097dc23599145f3a0
parent85c0102263e1a6a5b8deee177815815d4e3551f3 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@198709 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple-ssa-strength-reduction.c22
2 files changed, 9 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 452b1e20232..573dbbafb1a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c
index 2a2c6158df1..650ea19d63f 100644
--- a/gcc/gimple-ssa-strength-reduction.c
+++ b/gcc/gimple-ssa-strength-reduction.c
@@ -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;
/* 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);