https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99322

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
void bar (void *);
void
foo (void)
{
  bar (&&lab);
  #pragma omp parallel
  for (;;)
    ;
  lab:;
}
ICEs likely since r0-88143-gb357f682db35f4431e3011e7486a0ac865686e3e
Not really sure what to do if we find unreachable blocks with labels that need
to be preserved, we need to figure out where to place them exactly.
As the problematic pass is only the cfg pass (if flag_openmp || flag_openacc ||
flag_openmp_simd), I wonder if we e.g. shouldn't keep bb_to_omp_idx valid
across the cleanup_tree_cfg and if non-NULL, use that for the forced label from
unreachable blocks placement.

Reply via email to