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

            Bug ID: 101351
           Summary: ICE on valid code with -O1: in lra_split_hard_reg_for,
                    at lra-assigns.c:1837
           Product: gcc
           Version: tree-ssa
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: cnsun at uwaterloo dot ca
  Target Milestone: ---

$ gcc-trunk -v
Using built-in specs.
COLLECT_GCC=gcc-trunk
COLLECT_LTO_WRAPPER=/scratch/software/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /tmp/tmp.t468jxVWYr-gcc-builder/gcc/configure
--enable-languages=c,c++,lto --enable-checking-yes --enable-multiarch
--prefix=/scratch/software/gcc-trunk --disable-bootstrap
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.0.0 20210706 (experimental) [master revision
:e442981a9:a3543b5e8002c033b2304d7ac1d1e58218eebb51] (GCC)

$ cat mutant.c
foo() {
  register _Complex long a asm("rax");
  return a / 10;
}

$ gcc-trunk -w -O1 mutant.c
mutant.c: In function ‘foo’:
mutant.c:4:1: error: unable to find a register to spill
    4 | }
      | ^
mutant.c:4:1: error: this is the insn:
(insn 6 19 7 2 (parallel [
            (set (reg:DI 87)
                (truncate:DI (lshiftrt:TI (mult:TI (sign_extend:TI (reg:DI 93
[91]))
                            (sign_extend:TI (reg:DI 88)))
                        (const_int 64 [0x40]))))
            (clobber (reg:DI 93 [91]))
            (clobber (reg:CC 17 flags))
        ]) "mutant.c":3:12 439 {*smuldi3_highpart_1}
     (expr_list:REG_UNUSED (reg:DI 93 [91])
        (expr_list:REG_DEAD (reg:DI 88)
            (expr_list:REG_UNUSED (reg:CC 17 flags)
                (expr_list:REG_EQUAL (truncate:DI (lshiftrt:TI (mult:TI
(sign_extend:TI (reg:DI 0 ax [ a ]))
                                (const_int 7378697629483820647
[0x6666666666666667]))
                            (const_int 64 [0x40])))
                    (nil))))))
during RTL pass: reload
mutant.c:4:1: internal compiler error: in lra_split_hard_reg_for, at
lra-assigns.c:1837
0x73f51f _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        /tmp/tmp.t468jxVWYr-gcc-builder/gcc/gcc/rtl-error.c:108
0xd776e6 lra_split_hard_reg_for()
        /tmp/tmp.t468jxVWYr-gcc-builder/gcc/gcc/lra-assigns.c:1837
0xd71ba9 lra(_IO_FILE*)
        /tmp/tmp.t468jxVWYr-gcc-builder/gcc/gcc/lra.c:2412
0xd26c69 do_reload
        /tmp/tmp.t468jxVWYr-gcc-builder/gcc/gcc/ira.c:5822
0xd26c69 execute
        /tmp/tmp.t468jxVWYr-gcc-builder/gcc/gcc/ira.c:6008
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to