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

            Bug ID: 106462
           Summary: LRA on mips64el: unable to reload (subreg:SI (reg:DI))
                    constrained by "f"
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yangyujie at loongson dot cn
  Target Milestone: ---

Created attachment 53368
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53368&action=edit
-freport-bug dump

Hi,
compiling the following code with gcc 13.0.0 20220728
(mips64el-linux-gnuabi64):

extern void bar (float x, short y);

void foo (int argc)
{
    short c = argc * 2;
    float a = (float)(short)c, b = 9.5;

    bar (b/a, c);
}

failed with:

mips64el-linux-gnuabi64-gcc fail.c -O1 -mabi=64 -msingle-float -S -o /dev/null
fail.c: In function 'foo':
fail.c:9:1: error: unable to find a register to spill
    9 | }
      | ^
fail.c:9:1: error: this is the insn:
(insn 12 27 15 2 (set (reg:SF 202 [ a ])
        (float:SF (subreg/s/u:SI (reg/v:DI 209 [orig:197 c ] [197]) 0)))
"fail.c":6:11 270 {floatsisf2}
     (expr_list:REG_DEAD (reg/v:DI 209 [orig:197 c ] [197])
        (nil)))
during RTL pass: reload
fail.c:9:1: internal compiler error: in lra_split_hard_reg_for, at
lra-assigns.cc:1871
Please submit a full bug report, with preprocessed source.
See <https://gcc.gnu.org/bugs/> for instructions.
Preprocessed source stored into /tmp/ccZs64gB.out file, please attach this to
your bugreport.


This bug is also reproducible on gcc-8.3.0, so it seems to be around for quite
a while.
  • [Bug target/106462] New: LRA on ... yangyujie at loongson dot cn via Gcc-bugs

Reply via email to