https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71670

            Bug ID: 71670
           Summary: powerpc64le ICE in extract_constrain_insn with
                    -mcpu=power9
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anton at samba dot org
  Target Milestone: ---

The following testcase:

volatile int a;
int b;
void fn1(void) { b + (long)b || a; }

hits an ICE when built with:

# gcc -O1 -mcpu=power9 testcase.c

testcase.c: In function ‘fn1’:
testcase.c:3:1: error: insn does not satisfy its constraints:
 void fn1(void) { b + (long)b || a; }
 ^~~~
(insn 24 23 9 2 (parallel [
            (set (reg:CC 68 0 [162])
                (compare:CC (ashift:DI (sign_extend:DI (reg:SI 10 10))
                        (const_int 1 [0x1]))
                    (const_int 0 [0])))
            (clobber (scratch:DI))
        ]) testcase.c:3 260 {ashdi3_extswsli_dot}
     (expr_list:REG_DEAD (reg:SI 10 10)
        (nil)))
testcase.c:3:1: internal compiler error: in extract_constrain_insn, at
recog.c:2211
0x108329d3 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        ../../gcc/gcc/rtl-error.c:108
0x10832a2b _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
        ../../gcc/gcc/rtl-error.c:119
0x107f8797 extract_constrain_insn(rtx_insn*)
        ../../gcc/gcc/recog.c:2211
0x107fd89f copyprop_hardreg_forward_1
        ../../gcc/gcc/regcprop.c:774
0x107fe8b7 execute
        ../../gcc/gcc/regcprop.c:1280

Reply via email to