https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87065
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- It's combines known_cond: Breakpoint 6, known_cond (x=0x7ffff6a65198, cond=EQ, reg=0x7ffff6a3fa20, val=0x7ffff6a47930) at /space/rguenther/src/gcc-sccvn/gcc/combine.c:9468 9468 enum rtx_code code = GET_CODE (x); (gdb) p debug_rtx (x) (eq:V4SI (reg:V4SI 127 [ vect__6.22 ]) (reg:V4SI 162)) $13 = void (gdb) p debug_rtx (reg) (reg:V4SI 127 [ vect__6.22 ]) $14 = void (gdb) p debug_rtx (val) (reg:V4SI 162) ... 9517 if (comparison_dominates_p (cond, code)) (gdb) 9518 return const_true_rtx; neither uses of const_true_rtx nor const0_rtx are correct here. Simplest solution is to fend off all non-integer compares (mode of x) or to use appropriately moded results (vector true is {-1, -1 ... }).