Commit 7781d262 by Tom de Vries Committed by Tom de Vries

Handle exit phi without header phi in create_parallel_loop

2015-07-16  Tom de Vries  <tom@codesourcery.com>

	* tree-parloops.c (create_parallel_loop): Handle case that exit phi does
	not have a corresponding loop header phi.

From-SVN: r225873
parent 79855460
2015-07-16 Tom de Vries <tom@codesourcery.com> 2015-07-16 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (create_parallel_loop): Handle case that exit phi does
not have a corresponding loop header phi.
2015-07-16 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (create_loads_for_reductions): Handle case that * tree-parloops.c (create_loads_for_reductions): Handle case that
reduction is unused. reduction is unused.
......
...@@ -2050,13 +2050,17 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data, ...@@ -2050,13 +2050,17 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
!gsi_end_p (gpi); gsi_next (&gpi)) !gsi_end_p (gpi); gsi_next (&gpi))
{ {
source_location locus; source_location locus;
tree def;
gphi *phi = gpi.phi (); gphi *phi = gpi.phi ();
gphi *stmt; tree def = PHI_ARG_DEF_FROM_EDGE (phi, exit);
gimple def_stmt = SSA_NAME_DEF_STMT (def);
stmt = as_a <gphi *> ( /* If the exit phi is not connected to a header phi in the same loop, this
SSA_NAME_DEF_STMT (PHI_ARG_DEF_FROM_EDGE (phi, exit))); value is not modified in the loop, and we're done with this phi. */
if (!(gimple_code (def_stmt) == GIMPLE_PHI
&& gimple_bb (def_stmt) == loop->header))
continue;
gphi *stmt = as_a <gphi *> (def_stmt);
def = PHI_ARG_DEF_FROM_EDGE (stmt, loop_preheader_edge (loop)); def = PHI_ARG_DEF_FROM_EDGE (stmt, loop_preheader_edge (loop));
locus = gimple_phi_arg_location_from_edge (stmt, locus = gimple_phi_arg_location_from_edge (stmt,
loop_preheader_edge (loop)); loop_preheader_edge (loop));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment