[Bug target/37270] New: [4.4 Regression] SH: spill failure for R0_REGS

kkojima at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Aug 28 23:13:00 GMT 2008


The trunk compiler fails to compile libffi.call/cls_8byte.c
with -O2 -fomit-frame-pointer.  Here is a reduced test case:

typedef struct s8
{
  int a;
  float b;
} s8;

s8
s8_fn (struct s8 a1, struct s8 a2)
{
  struct s8 result;

  result.b = a1.b + a2.b;
  bar (a1.a, a1.b, a2.a, a2.b, result.a, result.b);
  return result;
}

With -O2 -fomit-frame-pointer, it causes

foo.c:15: error: unable to find a register to spill in class 'R0_REGS'
foo.c:15: error: this is the insn:
(insn:HI 23 44 45 3 foo.c:14 (parallel [
            (set (subreg:SF (reg:SI 1 r1 [orig:174 D.1226+4 ] [174]) 0)
                (reg:SF 163 [ D.1218 ]))
            (use (reg/v:PSI 151 ))
            (clobber (scratch:SI))
        ]) 205 {movsf_ie} (expr_list:REG_DEAD (reg:SF 163 [ D.1218 ])
        (nil)))
foo.c:15: internal compiler error: in spill_failure, at reload1.c:2098


-- 
           Summary: [4.4 Regression] SH: spill failure for R0_REGS
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kkojima at gcc dot gnu dot org
GCC target triplet: sh4-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37270



More information about the Gcc-bugs mailing list