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

Reply via email to