https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111822
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW --- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- Ah, -march=x86-64 was it. The ICE means that the entry block wasn't reachable from EXIT_BLOCK which means there are unreachable blocks. This usually means some pass lacks CFG cleanup or delete_unreachable_blocks (). A simple fix is the following, but the proper thing to do is track down who leaves unreachable blocks around in the IL. diff --git a/gcc/sched-rgn.cc b/gcc/sched-rgn.cc index eb75d1bdb26..ff455ddd12e 100644 --- a/gcc/sched-rgn.cc +++ b/gcc/sched-rgn.cc @@ -65,6 +65,7 @@ along with GCC; see the file COPYING3. If not see #include "dbgcnt.h" #include "pretty-print.h" #include "print-rtl.h" +#include "cfgcleanup.h" /* Disable warnings about quoting issues in the pp_xxx calls below that (intentionally) don't follow GCC diagnostic conventions. */ @@ -3707,6 +3708,7 @@ rest_of_handle_live_range_shrinkage (void) #ifdef INSN_SCHEDULING int saved; + delete_unreachable_blocks (); initialize_live_range_shrinkage (); saved = flag_schedule_interblock; flag_schedule_interblock = false;