Commit b1483e87 by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/25874 ([gomp] ICE in calc_dfs_tree())

	PR c++/25874
	* omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
	post dominators and cleanup cfg before returning.

	* gcc.dg/gomp/pr25874.c: Add dg-options.
	* g++.dg/gomp/pr25874.C: Add dg-options.

From-SVN: r123822
parent ed5ee445
2007-04-14 Jakub Jelinek <jakub@redhat.com>
PR c++/25874
* omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
post dominators and cleanup cfg before returning.
2007-04-14 Bernd Schmidt <bernd.schmidt@analog.com> 2007-04-14 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied. * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
......
...@@ -2409,6 +2409,7 @@ expand_omp_parallel (struct omp_region *region) ...@@ -2409,6 +2409,7 @@ expand_omp_parallel (struct omp_region *region)
block_stmt_iterator si; block_stmt_iterator si;
tree entry_stmt; tree entry_stmt;
edge e; edge e;
bool do_cleanup_cfg = false;
entry_stmt = last_stmt (region->entry); entry_stmt = last_stmt (region->entry);
child_fn = OMP_PARALLEL_FN (entry_stmt); child_fn = OMP_PARALLEL_FN (entry_stmt);
...@@ -2444,6 +2445,7 @@ expand_omp_parallel (struct omp_region *region) ...@@ -2444,6 +2445,7 @@ expand_omp_parallel (struct omp_region *region)
exit_succ_e = single_succ_edge (exit_bb); exit_succ_e = single_succ_edge (exit_bb);
make_edge (new_bb, exit_succ_e->dest, EDGE_FALLTHRU); make_edge (new_bb, exit_succ_e->dest, EDGE_FALLTHRU);
} }
do_cleanup_cfg = true;
} }
else else
{ {
...@@ -2537,6 +2539,14 @@ expand_omp_parallel (struct omp_region *region) ...@@ -2537,6 +2539,14 @@ expand_omp_parallel (struct omp_region *region)
/* Emit a library call to launch the children threads. */ /* Emit a library call to launch the children threads. */
expand_parallel_call (region, new_bb, entry_stmt, ws_args); expand_parallel_call (region, new_bb, entry_stmt, ws_args);
if (do_cleanup_cfg)
{
/* Clean up the unreachable sub-graph we created above. */
free_dominance_info (CDI_DOMINATORS);
free_dominance_info (CDI_POST_DOMINATORS);
cleanup_tree_cfg ();
}
} }
......
2007-04-14 Jakub Jelinek <jakub@redhat.com>
PR c++/25874
* gcc.dg/gomp/pr25874.c: Add dg-options.
* g++.dg/gomp/pr25874.C: Add dg-options.
2007-04-14 Bernhard Fischer <aldot@gcc.gnu.org> 2007-04-14 Bernhard Fischer <aldot@gcc.gnu.org>
PR fortran/21061 PR fortran/21061
// { dg-options "-O -fopenmp" }
int foo(); int foo();
struct wigner_d struct wigner_d
......
/* { dg-options "-O -fopenmp" } */
void foo(); void foo();
inline void bar() inline void bar()
......
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