re PR tree-optimization/50769 (ICE: in phi_alternatives_equal, at tree-cfgcleanup.c:355 with -O2 -fno-delete-null-pointer-checks -fno-guess-branch-probability -fipa-pta)

2011-10-19  Tom de Vries  <tom@codesourcery.com>

	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.

From-SVN: r180197
This commit is contained in:
Tom de Vries 2011-10-19 16:29:42 +00:00 committed by Tom de Vries
parent 87fb500b93
commit 40f73edd0c
2 changed files with 15 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2011-10-19 Tom de Vries <tom@codesourcery.com>
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 <ro@CeBiTec.Uni-Bielefeld.DE>
PR bootstrap/50777

View File

@ -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. */