[Bug tree-optimization/82819] [8 Regression] [graphite] ICE in set_codegen_error, at graphite-isl-ast-to-gimple.c:206
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 3 09:17:00 GMT 2017
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.
More information about the Gcc-bugs
mailing list