https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71629
--- Comment #2 from Arseny Solokha <asolokha at gmx dot com> --- gcc ICEs w/ the same error but different backtrace compiling the following testcase w/ -Os -mlra: int z4, pe; long long int wv, ca, hv, a5; void kw (int d9) { for (;;) { int f4 = 0; if (ca != 0) { long long int *jd = (long long int *)hv; long long int v4 = 1; int md = d9; do { if (wv == 0) a5 = 0; if (a5 != 0) { if ((*jd / hv) > (*jd > z4)) f4 = md; for (hv = 0; hv < 6; ++hv) wv = -z4 | a5; } for (ca = -1; ca < 10; ++ca) { d9 = (int)&v4; pe /= 3; } } while (f4 != 0); } } } % powerpc-e500v2-linux-gnuspe-gcc-7.0.0-alpha20160731 -w -c -Os -mlra -fstack-protector -fPIC cfwcdil3.c cfwcdil3.c: In function 'kw': cfwcdil3.c:37:1: internal compiler error: in lra_set_insn_recog_data, at lra.c:964 In this case gcc generates SPE instructions (evstdd, evldd), as -mno-lra suggests.