[Bug rtl-optimization/88347] ICE in begin_move_insn, at sched-ebb.c:175
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Dec 12 22:31:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88347
Segher Boessenkool <segher at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-12-12
CC| |segher at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Confirmed.
We here have an unconditional branch that is not followed by a barrier:
first there is a label and a jump table, after *that* is the barrier.
Is this correct RTL? If so,
===
diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c
index 49ae286..566cb24 100644
--- a/gcc/sched-ebb.c
+++ b/gcc/sched-ebb.c
@@ -172,7 +172,11 @@ begin_move_insn (rtx_insn *insn, rtx_insn *last)
if (e)
gcc_checking_assert (NOTE_P (x) || LABEL_P (x));
else
- gcc_checking_assert (BARRIER_P (x));
+ {
+ if (LABEL_P (x) && JUMP_TABLE_DATA_P (NEXT_INSN (x)))
+ x = NEXT_INSN (NEXT_INSN (x));
+ gcc_checking_assert (BARRIER_P (x));
+ }
}
if (e)
===
fixes it.
More information about the Gcc-bugs
mailing list