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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-02-06
     Ever confirmed|0                           |1

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The above testcase reproduced, reduced to following, started with r266385.
Note, this testcase ICEd in gcc 7.x and earlier too, got fixed with r258504
(started with r225484).  So, this testcase is effectively [7/9 Regression].

/* { dg-do compile } */
/* { dg-options "-O1 -fschedule-insns -fselective-scheduling -fno-tree-ter" }
*/
/* { dg-additional-options "-maccumulate-outgoing-args" { target i?86-*-*
x86_64-*-* } } */

void bar ();
void baz ();
void qux ();
_Complex char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o;

void
foo ()
{
  bar (b, c, d, e, 5);
  baz (4, a, b, c, d);
  baz (5, a, b, c, d, e);
  baz (b, c, d, e, f);
  baz (b, c, d, e, f, g);
  baz (b, c, d, e, f, g, h);
  baz (b, c, d, e, f, g, h, i);
  baz (j);
  baz (i, j, h, i, j, k, l, m, n, o);
  qux (e, g, i, k, m, o);
}

The ICE in 6.x/7.x used to be like:
pr88596.c: In function ‘foo’:
pr88596.c:19:1: error: unable to find a register to spill
 }
 ^
pr88596.c:19:1: error: this is the insn:
(insn 23 381 380 2 (set (zero_extract:SI (reg:SI 226 [orig:195 D.1795+1 ]
[195])
            (const_int 8 [0x8])
            (const_int 8 [0x8]))
        (reg:SI 227)) pr88596.c:9 115 {insvsi_1}
     (expr_list:REG_DEAD (reg:SI 227)
        (nil)))
pr88596.c:19:1: internal compiler error: in assign_by_spills, at
lra-assigns.c:1417

Reply via email to