https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69675
--- Comment #10 from Sebastian Pop <spop at gcc dot gnu.org> --- (In reply to Richard Biener from comment #9) > 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); I don't know why isl started the inner loop at 3*c0: In the end we have the identity for the array subscript: 3*c0 - 3*c0 = 0 Could be a bug in the older isl. > 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. I would like moving away from the older isl versions: newer isl have fewer bugs, and people also worked on making isl faster. Moving to a newer isl would allow to also clean up the #ifdef's from the graphite-*.c files which will make the code easier to read.