mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
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:
parent
3a001aff33
commit
5e8d9b4559
@ -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.
|
||||
|
@ -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 ();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user