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

Reply via email to