https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69675
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- Yeah, seems to be gone with ISL 0.18 here as well... (but with 0.16.1 I can still reproduce it). ISL 0.18 doesn't do anything to the loop. ISL 0.16.1 just did some IV transforms it seems: [scheduler] original ast: for (int c0 = 0; c0 <= -P_14; c0 += 1) for (int c1 = 0; c1 <= 3; c1 += 1) { S_5(c0, c1); if (c1 <= 2) S_6(c0, c1); } [scheduler] AST generated by isl: for (int c0 = 0; c0 <= -P_14; c0 += 1) for (int c1 = 3 * c0; c1 <= 3 * c0 + 3; c1 += 1) { S_5(c0, -3 * c0 + c1); if (3 * c0 + 2 >= c1) S_6(c0, -3 * c0 + c1); } and with ISL 0.18 we have [scheduler] isl optimized schedule is identical to the original schedule. for (int c0 = 0; c0 <= -P_14; c0 += 1) for (int c1 = 0; c1 <= 3; c1 += 1) { S_5(c0, c1); if (c1 <= 2) S_6(c0, c1); } and eventually code generation is not happy with the changed form (-fgraphite-identity is fine). Sebastian, any comment? I think we could still for example require current ISL for GCC 6 (0.18 or maybe 0.17.1). Or at least drop support for the current legacy.