https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85412
--- Comment #8 from Andrey Belevantsev <abel at gcc dot gnu.org> ---
Sigh. We set reset_sched_cycles_p to pipelining_p after the conditional, but
we have missed that in sel_sched_region_1 pipelining_p will be set to false.
So that initial patch should have the following hunk instead:
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 315f2c0c0ab..29d9abd7200 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -7648,11 +7648,11 @@ sel_sched_region (int rgn)
/* Schedule always selecting the next insn to make the correct data
for bundling or other later passes. */
pipelining_p = false;
+ reset_sched_cycles_p = false;
force_next_insn = 1;
sel_sched_region_1 ();
force_next_insn = 0;
}
- reset_sched_cycles_p = pipelining_p;
sel_region_finish (reset_sched_cycles_p);
}
I've checked that it fixes the ICE on the original revision, trunk doesn't ICE
for me.