https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88652
--- Comment #4 from Andrey Belevantsev <abel at gcc dot gnu.org> --- (In reply to Richard Biener from comment #3) > (In reply to Andrey Belevantsev from comment #2) > > (In reply to Martin Liška from comment #1) > > > Any progress on this please? > > > > Maybe a stupid question, but how do I debug this > > If I read that source line correctly, we're just assuming that for a > > HARD_REG_SET set and a (regno, mode) pair we can always have enough space in > > the set for regno, regno + 1, ..., regno + hard_regno_nregs (regno, mode) - > > 1. Is that not true anymore? > > I suppose place in a gcc_assert (regno + i < FIRST_PSEUDO_REGISTER) and have > it > assert? Looks like you're right :) I'll fix that, then. > > I don't see where the code checks that regno is a hard register. With > the following I get > > during RTL pass: sched1 > pr87759.c:39:1: internal compiler error: in verify_target_availability, at > sel-sched.c:1545 > 39 | } > | ^ > 0x110f7c3 verify_target_availability > /space/rguenther/src/svn/trunk2/gcc/sel-sched.c:1545 > 0x110fc31 find_best_reg_for_expr > /space/rguenther/src/svn/trunk2/gcc/sel-sched.c:1680 > 0x11147e9 fill_vec_av_set > /space/rguenther/src/svn/trunk2/gcc/sel-sched.c:3800 > 0x1114fea fill_ready_list > ... > > Index: gcc/sel-sched.c > =================================================================== > --- gcc/sel-sched.c (revision 269832) > +++ gcc/sel-sched.c (working copy) > @@ -1542,6 +1542,7 @@ verify_target_availability (expr_t expr, > { > if (bitmap_bit_p (used_regs, regno + i)) > live_available = false; > + gcc_assert (regno + i < FIRST_PSEUDO_REGISTER); > if (TEST_HARD_REG_BIT (reg_rename_p->unavailable_hard_regs, regno + > i)) > hard_available = false; > } > > (gdb) p regno > $1 = 158