https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115101
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org Last reconfirmed| |2024-05-15 Status|UNCONFIRMED |NEW Component|middle-end |tree-optimization Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. [scheduler] original ast: for (int c0 = 0; c0 <= 3; c0 += 1) for (int c1 = 0; c1 <= 3; c1 += 1) { for (int c2 = 0; c2 <= 3; c2 += 1) { for (int c3 = 0; c3 <= 1; c3 += 1) S_3(c0, c1, c2, c3); S_21(c0, c1, c2); } for (int c2 = 0; c2 <= 1; c2 += 1) for (int c5 = 0; c5 <= 3; c5 += 1) S_6(c0, c1, c5, c2); for (int c2 = 0; c2 <= 3; c2 += 1) S_23(c0, c1, c2); } shows something goes wrong translating the sibling loop or the original AST shown is in fact a transformed one already. The transformed shown shows an extra interchange: [scheduler] AST generated by isl: for (int c0 = 0; c0 <= 3; c0 += 1) for (int c1 = 0; c1 <= 3; c1 += 1) { for (int c2 = 0; c2 <= 3; c2 += 1) { for (int c3 = 0; c3 <= 1; c3 += 1) S_3(c0, c1, c2, c3); S_21(c0, c1, c2); } for (int c4 = 0; c4 <= 3; c4 += 1) for (int c5 = 0; c5 <= 1; c5 += 1) S_6(c0, c1, c4, c5); for (int c2 = 0; c2 <= 3; c2 += 1) S_23(c0, c1, c2); } but the distribution of the sibling for (i...) loop looks confused already.