https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79806
Bug ID: 79806
Summary: [5/6/7 Regression] ICE error: unable to find a
register to spill (in assign_by_spills, at
lra-assigns.c:1457)
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code, ra
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
Target Milestone: ---
Target: x86_64-linux-gnu
Starting from GCC 4.6, we ICE:
$ gcc /home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr65693.c
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr65693.c: In
function ‘foo’:
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr65693.c:13:1:
error: unable to find a register to spill
}
^
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr65693.c:13:1:
error: this is the insn:
(insn 11 35 12 2 (parallel [
(set (reg:DI 96)
(udiv:DI (reg:DI 94)
(reg:DI 106)))
(set (reg:DI 107 [97])
(umod:DI (reg:DI 94)
(reg:DI 106)))
(clobber (reg:CC 17 flags))
])
"/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr65693.c":10 368
{*udivmoddi4}
(expr_list:REG_UNUSED (reg:DI 107 [97])
(expr_list:REG_DEAD (reg:DI 106)
(expr_list:REG_DEAD (reg:DI 94)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))))
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr65693.c:13:1:
internal compiler error: in assign_by_spills, at lra-assigns.c:1457
0xb95868 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../gcc/rtl-error.c:108
0xa84561 assign_by_spills
../../gcc/lra-assigns.c:1457
0xa84c7e lra_assign()
../../gcc/lra-assigns.c:1643
0xa802d6 lra(_IO_FILE*)
../../gcc/lra.c:2451
0xa36479 do_reload
../../gcc/ira.c:5451
0xa36479 execute
../../gcc/ira.c:5635
I use: -mtune=generic -march=x86-64