------- Comment #2 from jakub at gcc dot gnu dot org 2006-04-27 15:38 ------- This is not specific to goto, any OMP structured block which the initial cfg pass proves it will never return is a problem. In that case, the corresponding OMP_RETURN is optimized out as unreachable. The first ICE is fairly easy to fix: --- omp-low.c.jj2 2006-04-27 16:35:04.000000000 +0200 +++ omp-low.c 2006-04-27 17:29:32.000000000 +0200 @@ -2231,6 +2231,11 @@ remove_exit_barrier (struct omp_region *
exit_bb = region->exit; + /* If the parallel region doesn't return, we don't have REGIOn->EXIT + block at all. */ + if (! exit_bb) + return; + /* The last insn in the block will be the parallel's OMP_RETURN. The workshare's OMP_RETURN will be in a preceding block. The kinds of statements that can appear in between are extremely limited -- no but with this, we ICE in move_sese_region_to_fn and there it will be harder to deal with it. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rth at gcc dot gnu dot org, | |dnovillo at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27328