https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84112
Bug ID: 84112 Summary: [8 Regression] powerpc64le ICE in LRA on openjdk Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- The following testcase ICEs with -mcpu=power8 -O3 -fstack-protector-strong -fpic on powerpc64le-linux with: rh1539812.i: In function ‘foo’: rh1539812.i:30:1: internal compiler error: in lra_set_insn_recog_data, at lra.c:998 } ^ 0xd2da3d lra_set_insn_recog_data(rtx_insn*) ../../gcc/lra.c:996 0xd2b6c5 lra_get_insn_recog_data ../../gcc/lra-int.h:491 0xd2f70b lra_update_insn_regno_info(rtx_insn*) ../../gcc/lra.c:1622 0xd2fcb1 lra_push_insn_1 ../../gcc/lra.c:1773 0xd2fce4 lra_push_insn(rtx_insn*) ../../gcc/lra.c:1781 The instruction in question is: (insn 1791 1790 1241 3 (set (reg:DI 1769) (and:DI (plus:DI (reg:DI 1768) (reg:DI 1594)) (const_int -16 [0xfffffffffffffff0]))) -1 (nil)) char *b; int c, d, e, f; void foo (char *h, int k, int l, int m, int j, int q) { char *i = b; int n = d; int s = e; while (c) { for (; j <= 0; j += 12) { i[j] = n & k - h[j] >> 31 | q & ~(k - h[j] >> 31); i[j + 1] = n & l - h[j + 1] >> 31 | q & ~(l - h[j + 1] >> 31); i[j + 2] = n & m - h[j + 2] >> 31 | s & ~(m - h[j + 2] >> 31); i[j + 3] = n & k - h[j + 3] >> 31 | q & ~(k - h[j + 3] >> 31); i[j + 4] = n & l - h[j + 4] >> 31 | q & ~(l - h[j + 4] >> 31); i[j + 5] = n & m - h[j + 5] >> 31 | s & ~(m - h[j + 5] >> 31); i[j + 6] = n & k - h[j + 6] >> 31 | q & ~(k - h[j + 6] >> 31); i[j + 7] = n & l - h[j + 7] >> 31 | q & ~(l - h[j + 7] >> 31); i[j + 8] = n & m - h[j + 8] >> 31 | s & ~(m - h[j + 8] >> 31); i[j + 9] = n & k - h[j + 9] >> 31 | q & ~(k - h[j + 9] >> 31); i[j + 10] = n & l - h[j + 10] >> 31 | q & ~(l - h[j + 10] >> 31); i[j + 11] = n & m - h[j + 11] >> 31 | s & ~(m - h[j + 11] >> 31); } while (j < f) ; } }