From c8d97db2cc5f8c8b603196e1f3704b4a2c3caf37 Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Tue, 5 Nov 2013 14:13:56 +0000 Subject: [PATCH] tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from gimple.h and the rest of the condition in... 2013-11-05 Andrew MacLeod * tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from gimple.h and the rest of the condition in eliminate_build. (eliminate_build): Call new routine. * gimple.h (phi_ssa_name_p): Delete. From-SVN: r204393 --- gcc/ChangeLog | 7 +++++++ gcc/gimple.h | 13 ------------- gcc/tree-outof-ssa.c | 21 ++++++++++++++++++--- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e388ec9660d..6dd16fc34f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-11-05 Andrew MacLeod + + * tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from + gimple.h and the rest of the condition in eliminate_build. + (eliminate_build): Call new routine. + * gimple.h (phi_ssa_name_p): Delete. + 2013-11-05 Trevor Saunders * vec.c (vec_prefix::calculate_allocation): Don't try to handle the diff --git a/gcc/gimple.h b/gcc/gimple.h index b34424c18d3..90773c00524 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -3633,19 +3633,6 @@ gimple_phi_set_arg (gimple gs, unsigned index, struct phi_arg_d * phiarg) gs->gimple_phi.args[index] = *phiarg; } -/* PHI nodes should contain only ssa_names and invariants. A test - for ssa_name is definitely simpler; don't let invalid contents - slip in in the meantime. */ - -static inline bool -phi_ssa_name_p (const_tree t) -{ - if (TREE_CODE (t) == SSA_NAME) - return true; - gcc_checking_assert (is_gimple_min_invariant (t)); - return false; -} - /* Return the PHI nodes for basic block BB, or NULL if there are no PHI nodes. */ diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c index 1e982857e14..4dc3f9e4a8d 100644 --- a/gcc/tree-outof-ssa.c +++ b/gcc/tree-outof-ssa.c @@ -548,6 +548,23 @@ eliminate_name (elim_graph g, int T) elim_graph_add_node (g, T); } +/* Return true if this phi argument T should have a copy queued when using + var_map MAP. PHI nodes should contain only ssa_names and invariants. A + test for ssa_name is definitely simpler, but don't let invalid contents + slip through in the meantime. */ + +static inline bool +queue_phi_copy_p (var_map map, tree t) +{ + if (TREE_CODE (t) == SSA_NAME) + { + if (var_to_partition (map, t) == NO_PARTITION) + return true; + return false; + } + gcc_checking_assert (is_gimple_min_invariant (t)); + return true; +} /* Build elimination graph G for basic block BB on incoming PHI edge G->e. */ @@ -577,9 +594,7 @@ eliminate_build (elim_graph g) /* If this argument is a constant, or a SSA_NAME which is being left in SSA form, just queue a copy to be emitted on this edge. */ - if (!phi_ssa_name_p (Ti) - || (TREE_CODE (Ti) == SSA_NAME - && var_to_partition (g->map, Ti) == NO_PARTITION)) + if (queue_phi_copy_p (g->map, Ti)) { /* Save constant copies until all other copies have been emitted on this edge. */