https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82819
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-checking --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Ok, so it's caused by us tiling the original schedule and ISL splitting the outer loop. for (int c0 = 0; c0 < -P_2; c0 += 1) { S_4(c0); for (int c1 = 0; c1 <= 2; c1 += 1) S_5(c0, c1); S_16(c0); if (P_19 + 6 * c0 == 18446744073709551610) S_9((-P_19 + 18446744073709551610) / 6); S_10(c0); } becomes for (int c0 = P_19; c0 <= min(18446744073709551609, -6 * P_2 + P_19 - 6); c0 += 6) { S_4((-P_19 + c0) / 6); S_16((-P_19 + c0) / 6); for (int c2 = 0; c2 <= 2; c2 += 1) S_5((-P_19 + c0) / 6, c2); S_10((-P_19 + c0) / 6); } if (P_19 >= 6 * P_2 + 18446744073709551616 && (P_19 - 4) % 6 == 0) { S_16((-P_19 + 18446744073709551610) / 6); S_4((-P_19 + 18446744073709551610) / 6); for (int c2 = 0; c2 <= 2; c2 += 1) S_5((-P_19 + 18446744073709551610) / 6, c2); S_9((-P_19 + 18446744073709551610) / 6); S_10((-P_19 + 18446744073709551610) / 6); } for (int c0 = ((P_19 + 1) % 6) + 18446744073709551611; c0 < -6 * P_2 + P_19 - 5; c0 += 6) { S_4((-P_19 + c0) / 6); S_16((-P_19 + c0) / 6); for (int c2 = 0; c2 <= 2; c2 += 1) S_5((-P_19 + c0) / 6, c2); S_10((-P_19 + c0) / 6); } exposing constants that are too large for our choosen code-generation type (signed long long). For some reason -fgraphite-identity performs a similar "transform". Note that this code-gen error is somewhat "expected" until we do better with selecting wider types for code-generation. Note that 18446744073709551616 doesn't even fit unsigned long long. For -m64 we use __int128 which is why the bug doesn't trigger there.