The following foo.c which is a reduced case of libc/grp/initgroup.c
causes an ICE:

foo.c:13: error: unable to find a register to spill in class 'R0_REGS'
foo.c:13: error: this is the insn:
(insn:HI 28 32 34 1 (set (reg:SI 147 t)
        (eq:SI (reg/v:SI 2 r2 [orig:161 result ] [161])
            (const_int -1 [0xffffffffffffffff]))) 1 {cmpeqsi_t}
(insn_list:REG_DEP_ANTI 23 (insn_list:REG_DEP_ANTI 24 (insn_list:REG_DEP_ANTI 25
(insn_list:REG_DEP_TRUE 26 (nil)))))
    (nil))

with -O2.

foo.c:
--
extern __thread int err __attribute__ ((tls_model ("initial-exec")));

int
foo (int n, int *grp)
{
  int result;

  do
    result = bar (n, grp);
  while (result == -1 && err == 22 && --n > 0);

  return result;
}
--

-- 
           Summary: Variable with the initial-exec tls-model attribute
                    causes spill failure
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kkojima at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: sh4-unknown-linux-gnu


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

Reply via email to