http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60071
Bug ID: 60071 Summary: [4.9 Regression] [SH] internal compiler error: in final_scan_insn, at final.c:2963 Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: kkojima at gcc dot gnu.org CC: olegendo at gcc dot gnu.org Target: sh*-*-* SH fails to build on trunk with ../../../ORIG/trunk/libgcc/fp-bit.c:1437:1: error: could not split insn } ^ (insn 119 38 83 (parallel [ (set (reg:SI 0 r0 [orig:160 D.2909 ] [160]) (minus:SI (const_int -2147483648 [0xffffffff80000000]) (reg:SI 147 t))) (clobber (reg:SI 147 t)) ]) ../../../ORIG/trunk/libgcc/fp-bit.c:1429 404 {*mov_t_msb_neg} (expr_list:REG_DEAD (reg:SI 147 t) (expr_list:REG_UNUSED (reg:SI 147 t) (nil)))) ../../../ORIG/trunk/libgcc/fp-bit.c:1437:1: internal compiler error: in final_scan_insn, at final.c:2963 0x859edbf _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) ../../ORIG/trunk/gcc/rtl-error.c:109 during building libgcc after the revision r207460 | jakub | 2014-02-04 21:14:52 +0900 (Tue, 04 Feb 2014) | 6 lines PR rtl-optimization/57915 * recog.c (simplify_while_replacing): If all unary/binary/relational operation arguments are constant, attempt to simplify those. Here is a reduced test case for -O1: int foo (int class, int sign) { if (__builtin_expect (class == 4, 0)) return (sign ? (-((int) ((~(unsigned)0) >> 1)))-1 : ((int) ((~(unsigned)0) >> 1))); } It looks that now *mov_t_msb_neg define_insn_and_split is produced in ira pass and has no chance to split.