From 35bfa3a252aa3d04eef2089bb5ce9acb427874a5 Mon Sep 17 00:00:00 2001 From: vries Date: Wed, 19 Oct 2011 16:29:42 +0000 Subject: [PATCH] 2011-10-19 Tom de Vries PR tree-optimization/50769 * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2 unconditionally. Handle case that phi_vuse2 is not an SSA_NAME. Add dummy argument .MEM to phi when increasing number of arguments of phi by redirecting edges to the block with phi. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180197 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/tree-ssa-tail-merge.c | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e67dcbf24c0..e4a45f4bf60 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2011-10-19 Tom de Vries + + PR tree-optimization/50769 + * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2 + unconditionally. Handle case that phi_vuse2 is not an SSA_NAME. Add + dummy argument .MEM to phi when increasing number of arguments of phi by + redirecting edges to the block with phi. + 2011-10-19 Rainer Orth PR bootstrap/50777 diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index 529388c1b22..2a47dc6b0a9 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -1508,11 +1508,14 @@ replace_block_by (basic_block bb1, basic_block bb2, bool update_vops) edge e; edge_iterator ei; + phi_vuse2 = vop_at_entry (bb2); + if (phi_vuse2 != NULL_TREE && TREE_CODE (phi_vuse2) != SSA_NAME) + phi_vuse2 = NULL_TREE; + if (update_vops) { /* Find the vops at entry of bb1 and bb2. */ phi_vuse1 = vop_at_entry (bb1); - phi_vuse2 = vop_at_entry (bb2); /* If one of the 2 not found, it means there's no need to update. */ update_vops = phi_vuse1 != NULL_TREE && phi_vuse2 != NULL_TREE; @@ -1545,6 +1548,9 @@ replace_block_by (basic_block bb1, basic_block bb2, bool update_vops) gcc_assert (pred_edge != NULL); if (update_vops) VEC_safe_push (edge, heap, redirected_edges, pred_edge); + else if (phi_vuse2 && gimple_bb (SSA_NAME_DEF_STMT (phi_vuse2)) == bb2) + add_phi_arg (SSA_NAME_DEF_STMT (phi_vuse2), SSA_NAME_VAR (phi_vuse2), + pred_edge, UNKNOWN_LOCATION); } /* Update the vops. */ -- 2.11.4.GIT