This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/27328] ICE with -fopenmp and goto



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]