https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91154
--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- Testcase for the loop in question: void foo (int *dc, int *mc, int *tpdd, int *tpmd, int M) { int sc; int k; for (k = 1; k <= M; k++) { dc[k] = dc[k-1] + tpdd[k-1]; if ((sc = mc[k-1] + tpmd[k-1]) > dc[k]) dc[k] = sc; if (dc[k] < -987654321) dc[k] = -987654321; } }