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