https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88652

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-03-21
     Ever confirmed|0                           |1

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
(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?

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