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

            Bug ID: 57960
           Summary: LRA ICE building glibc
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: krebbel at gcc dot gnu.org

Testcase extracted from Glibc e_acosl.c:

typedef union
{
  long double value;
  struct
  {
    unsigned int w0, w1, w2, w3;
  }
  parts32;
}
ieee854_long_double_shape_type;
static const long double one = 1.0L;
long double
__ieee754_acosl (long double x)
{
  long double z, w;
  int ix;
  ieee854_long_double_shape_type u;

      z = (one - u.value) * 0.5;
      u.parts32.w2 = 0;
      u.parts32.w3 = 0;
      w = z - u.value * u.value;
      return 2.0 * w;

}

builds fine with: cc1 -fpreprocessed  -quiet  -O1 -mno-lra

but with: cc1 -fpreprocessed  -quiet  -O1

t.c: In function ‘__ieee754_acosl’:
t.c:25:1: error: unable to generate reloads for:
 }
 ^
(insn 14 13 16 2 (set (strict_low_part (subreg:SI (reg/v:TI 51 [ u ]) 12))
        (const_int 0 [0])) t.c:21 77 {movstrictsi}
     (nil))
t.c:25:1: internal compiler error: in curr_insn_transform, at
lra-constraints.c:2954
0x8051ecb5 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        /home/andreas/patched/gcc-head/gcc/rtl-error.c:109
0x8046895b curr_insn_transform
        /home/andreas/patched/gcc-head/gcc/lra-constraints.c:2954
0x804692e1 lra_constraints(bool)
        /home/andreas/patched/gcc-head/gcc/lra-constraints.c:3810
0x804577a9 lra(_IO_FILE*)
        /home/andreas/patched/gcc-head/gcc/lra.c:2319
0x8040c22b do_reload
        /home/andreas/patched/gcc-head/gcc/ira.c:4689
0x8040c22b rest_of_handle_reload
        /home/andreas/patched/gcc-head/gcc/ira.c:4801

Reply via email to