Commit 5e8d9b45 by Jeff Law Committed by Jeff Law

tree-ssa-dom.c (cprop_into_successor_phis): Also propagate edge implied…

tree-ssa-dom.c (cprop_into_successor_phis): Also propagate edge implied equivalences into successor phis.

        * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate
        edge implied equivalences into successor phis.

From-SVN: r202345
parent 3a001aff
2013-09-06 Jeff Law <law@redhat.com>
* tree-ssa-dom.c (cprop_into_successor_phis): Also propagate
edge implied equivalences into successor phis.
2013-09-06 Joern Rennecke <joern.rennecke@embecosm.com> 2013-09-06 Joern Rennecke <joern.rennecke@embecosm.com>
* resource.c (mark_referenced_resources): Handle COND_EXEC. * resource.c (mark_referenced_resources): Handle COND_EXEC.
......
...@@ -1642,6 +1642,28 @@ cprop_into_successor_phis (basic_block bb) ...@@ -1642,6 +1642,28 @@ cprop_into_successor_phis (basic_block bb)
if (gsi_end_p (gsi)) if (gsi_end_p (gsi))
continue; continue;
/* We may have an equivalence associated with this edge. While
we can not propagate it into non-dominated blocks, we can
propagate them into PHIs in non-dominated blocks. */
/* Push the unwind marker so we can reset the const and copies
table back to its original state after processing this edge. */
const_and_copies_stack.safe_push (NULL_TREE);
/* Extract and record any simple NAME = VALUE equivalences.
Don't bother with [01] = COND equivalences, they're not useful
here. */
struct edge_info *edge_info = (struct edge_info *) e->aux;
if (edge_info)
{
tree lhs = edge_info->lhs;
tree rhs = edge_info->rhs;
if (lhs && TREE_CODE (lhs) == SSA_NAME)
record_const_or_copy (lhs, rhs);
}
indx = e->dest_idx; indx = e->dest_idx;
for ( ; !gsi_end_p (gsi); gsi_next (&gsi)) for ( ; !gsi_end_p (gsi); gsi_next (&gsi))
{ {
...@@ -1667,6 +1689,8 @@ cprop_into_successor_phis (basic_block bb) ...@@ -1667,6 +1689,8 @@ cprop_into_successor_phis (basic_block bb)
&& may_propagate_copy (orig_val, new_val)) && may_propagate_copy (orig_val, new_val))
propagate_value (orig_p, new_val); propagate_value (orig_p, new_val);
} }
restore_vars_to_original_value ();
} }
} }
......
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