re PR middle-end/41193 (slow compilation with graphite / ice with graphite)

2009-10-15  Sebastian Pop  <sebastian.pop@amd.com>

	* graphite-sese-to-poly.c (insert_copyin): Use gsi_insert_seq_on_edge.
	(rewrite_commutative_reductions_out_of_ssa): Call gsi_commit_edge_inserts,
	and check the SSA representation.

	* gfortran.dg/graphite/id-18.f90: New, reduced from PR41193.

From-SVN: r154590
This commit is contained in:
Sebastian Pop 2009-11-25 05:08:09 +00:00 committed by Sebastian Pop
parent 8e49fe911a
commit 6c4499b675
2 changed files with 16 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2009-10-15 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (insert_copyin): Use gsi_insert_seq_on_edge.
(rewrite_commutative_reductions_out_of_ssa): Call gsi_commit_edge_inserts,
and check the SSA representation.
* gfortran.dg/graphite/id-18.f90: New, reduced from PR41193.
2009-10-15 Sebastian Pop <sebastian.pop@amd.com> 2009-10-15 Sebastian Pop <sebastian.pop@amd.com>
* gcc.dg/graphite/pr40157.c: Use -floop-block as reported in the PR. * gcc.dg/graphite/pr40157.c: Use -floop-block as reported in the PR.

View File

@ -2591,13 +2591,10 @@ insert_copyin (tree red, gimple loop_phi)
{ {
gimple_seq stmts; gimple_seq stmts;
tree init = initial_value_for_loop_phi (loop_phi); tree init = initial_value_for_loop_phi (loop_phi);
edge e = edge_initial_value_for_loop_phi (loop_phi);
basic_block bb = e->src;
gimple_stmt_iterator insert_gsi = gsi_last_bb (bb);
tree expr = build2 (MODIFY_EXPR, TREE_TYPE (init), red, init); tree expr = build2 (MODIFY_EXPR, TREE_TYPE (init), red, init);
force_gimple_operand (expr, &stmts, true, NULL); force_gimple_operand (expr, &stmts, true, NULL);
gsi_insert_seq_before (&insert_gsi, stmts, GSI_SAME_STMT); gsi_insert_seq_on_edge (edge_initial_value_for_loop_phi (loop_phi), stmts);
} }
/* Rewrite out of SSA the reduction described by the loop phi nodes /* Rewrite out of SSA the reduction described by the loop phi nodes
@ -2697,6 +2694,13 @@ rewrite_commutative_reductions_out_of_ssa (sese region, sbitmap reductions)
FOR_EACH_LOOP (li, loop, 0) FOR_EACH_LOOP (li, loop, 0)
if (loop_in_sese_p (loop, region)) if (loop_in_sese_p (loop, region))
rewrite_commutative_reductions_out_of_ssa_loop (loop, reductions); rewrite_commutative_reductions_out_of_ssa_loop (loop, reductions);
gsi_commit_edge_inserts ();
update_ssa (TODO_update_ssa);
#ifdef ENABLE_CHECKING
verify_ssa (false);
verify_loop_closed_ssa ();
#endif
} }
/* Builds the polyhedral representation for a SESE region. */ /* Builds the polyhedral representation for a SESE region. */