https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117192
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #8) > Yes but in this case the mask will 0 forcing it all to 0 . But the mask is > swapping around to -1 for some reason. Also if you are worried about that, you can do: ``` int a, b, c, d; static int e[6]={0,0,0,0,0,0}; int main() { for (d = 0; d < 6; d++) if (!c) e[d] = 0; for (; b < 6; b++) a = e[b]; if (a != 0) __builtin_abort(); return 0; } ``` And compile with `-O3 -fno-unswitch-loops -fallow-store-data-races` to have the same issue.