Commit 129b5668 by Jeff Law Committed by Jeff Law

Revert

	2017-11-19  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
	of degenerates resulting from ignoring an edge.

From-SVN: r255802
parent 8c128599
2017-12-18 Jeff Law <law@redhat.com>
Revert
2017-11-19 Jeff Law <law@redhat.com>
* tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
of degenerates resulting from ignoring an edge.
2017-12-18 Martin Sebor <msebor@redhat.com> 2017-12-18 Martin Sebor <msebor@redhat.com>
PR middle-end/83373 PR middle-end/83373
...@@ -1109,7 +1109,6 @@ record_equivalences_from_phis (basic_block bb) ...@@ -1109,7 +1109,6 @@ record_equivalences_from_phis (basic_block bb)
tree rhs = NULL; tree rhs = NULL;
size_t i; size_t i;
bool ignored_phi_arg = false;
for (i = 0; i < gimple_phi_num_args (phi); i++) for (i = 0; i < gimple_phi_num_args (phi); i++)
{ {
tree t = gimple_phi_arg_def (phi, i); tree t = gimple_phi_arg_def (phi, i);
...@@ -1120,14 +1119,10 @@ record_equivalences_from_phis (basic_block bb) ...@@ -1120,14 +1119,10 @@ record_equivalences_from_phis (basic_block bb)
if (lhs == t) if (lhs == t)
continue; continue;
/* We want to track if we ignored any PHI arguments because /* If the associated edge is not marked as executable, then it
their associated edges were not executable. This impacts can be ignored. */
whether or not we can use any equivalence we might discover. */
if ((gimple_phi_arg_edge (phi, i)->flags & EDGE_EXECUTABLE) == 0) if ((gimple_phi_arg_edge (phi, i)->flags & EDGE_EXECUTABLE) == 0)
{ continue;
ignored_phi_arg = true;
continue;
}
t = dom_valueize (t); t = dom_valueize (t);
...@@ -1152,15 +1147,9 @@ record_equivalences_from_phis (basic_block bb) ...@@ -1152,15 +1147,9 @@ record_equivalences_from_phis (basic_block bb)
a useful equivalence. We do not need to record unwind data for a useful equivalence. We do not need to record unwind data for
this, since this is a true assignment and not an equivalence this, since this is a true assignment and not an equivalence
inferred from a comparison. All uses of this ssa name are dominated inferred from a comparison. All uses of this ssa name are dominated
by this assignment, so unwinding just costs time and space. by this assignment, so unwinding just costs time and space. */
Note that if we ignored a PHI argument and the resulting equivalence
is SSA_NAME = SSA_NAME. Then we can not use the equivalence as the
uses of the LHS SSA_NAME are not necessarily dominated by the
assignment of the RHS SSA_NAME. */
if (i == gimple_phi_num_args (phi) if (i == gimple_phi_num_args (phi)
&& may_propagate_copy (lhs, rhs) && may_propagate_copy (lhs, rhs))
&& (!ignored_phi_arg || TREE_CODE (rhs) != SSA_NAME))
set_ssa_name_value (lhs, rhs); set_ssa_name_value (lhs, rhs);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment