[Bug target/60071] New: [4.9 Regression] [SH] internal compiler error: in final_scan_insn, at final.c:2963

kkojima at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Feb 5 05:09:00 GMT 2014


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.



More information about the Gcc-bugs mailing list