https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111032
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- One way of fixing this is to optimize the following for the scalar side: ``` _15 = _4 != 0; _16 = (short unsigned int) _15; _17 = _16 << 3; _6 = (int) _17; ``` into: ``` _t = (int) _15; _6 = _t << 3; ``` Note this has the same issue too: ``` void __attribute__ ((noipa)) f0_1 (int *__restrict r, int *__restrict pred) { for (int i = 0; i < 1024; ++i) { short p = pred[i]?-1:0; r[i] = p ; } } ```