https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68215
--- Comment #1 from Ilya Enkovich <ienkovich at gcc dot gnu.org> --- It is reproducible without vector comparison on older compilers. Here is a smaller reproducer: long double v __attribute__((vector_size(16))); __typeof((v<v)[0]) v1; bool v2; void test () { v2 = v1 != 0; } GCC6 and GCC4.9 fail with the same ICE in expand_shift_1 for powerpc on this test. BTW if we use __float128 instead of long double then this issue is reproducible on i386 target also. Looks like never worked for 32bit targets.