https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71621
Bug ID: 71621
Summary: [7 Regression] ICE in assign_by_spills, at
lra-assigns.c:1417 (error: unable to find a register
to spill) w/ -O2 -mavx2 -ftree-vectorize
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Keywords: ra
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: asolokha at gmx dot com
CC: uros at gcc dot gnu.org, vmakarov at gcc dot gnu.org
Target Milestone: ---
Target: x86_64-pc-linux-gnu
gcc-7.0.0-alpha20160619 snapshot fails to compile the following reduced
testcase w/ -O2 -mavx2 -ftree-vectorize:
int cn;
int *li;
void
y8 (void)
{
int gv;
int *be = &gv;
short int v4 = 2;
while (*li != 0)
{
int sy;
for (sy = 0; sy < 5; ++sy)
{
int **t6 = &be;
gv |= sy ? 0 : v4;
if (gv != 0)
++gv;
t6 = &cn;
if (gv != 0)
*t6 = 0;
}
for (gv = 0; gv < 24; ++gv)
v4 |= 1 <= 1 % 0;
++(*li);
}
}
% x86_64-pc-linux-gnu-gcc-7.0.0-alpha20160619 -w -c -O2 -mavx2 -ftree-vectorize
nl1c5wer.c
nl1c5wer.c: In function 'y8':
nl1c5wer.c:28:1: error: unable to find a register to spill
}
^
nl1c5wer.c:28:1: error: this is the insn:
(insn 35 177 37 3 (set (reg:V16HI 136)
(vec_duplicate:V16HI (reg:HI 199))) 4217 {*vec_dupv16hi}
(expr_list:REG_DEAD (reg:HI 199)
(nil)))
nl1c5wer.c:28:1: internal compiler error: in assign_by_spills, at
lra-assigns.c:1417
Changing -mavx2 to -march=haswell results in the following:
% x86_64-pc-linux-gnu-gcc-7.0.0-alpha20160619 -w -c -O2 -march=haswell
-ftree-vectorize nl1c5wer.c
nl1c5wer.c: In function 'y8':
nl1c5wer.c:28:1: internal compiler error: Max. number of generated reload insns
per insn is achieved (90)