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