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
This commit is contained in:
Jeff Law 2013-09-06 11:41:48 -06:00 committed by Jeff Law
parent 3a001aff33
commit 5e8d9b4559
2 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,8 @@
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>
* resource.c (mark_referenced_resources): Handle COND_EXEC.

View File

@ -1642,6 +1642,28 @@ cprop_into_successor_phis (basic_block bb)
if (gsi_end_p (gsi))
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;
for ( ; !gsi_end_p (gsi); gsi_next (&gsi))
{
@ -1667,6 +1689,8 @@ cprop_into_successor_phis (basic_block bb)
&& may_propagate_copy (orig_val, new_val))
propagate_value (orig_p, new_val);
}
restore_vars_to_original_value ();
}
}