[Bug tree-optimization/68823] [6/7 Regression][graphite] tramp3d-v4 compiled with -floop-nest-optimize crashes
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 2 16:25:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68823
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
Ok, fails with:
g++ -floop-nest-optimize -Ofast -w tramp3d-v4.cpp -fdump-tree-graphite-details
-$ fdbg-cnt=graphite_scop:4
Problem are following side-by-side loops:
[scheduler] original ast:
{
for (int c0 = 0; c0 <= 2; c0 += 1)
S_3(c0);
for (int c0 = 0; c0 <= 2; c0 += 1)
S_6(c0);
}
[scheduler] AST generated by isl:
{
for (int c0 = 0; c0 <= 2; c0 += 1)
S_6(c0);
for (int c0 = 0; c0 <= 2; c0 += 1)
S_3(c0);
}
which are interchanged. But due to fact that there's a data dependency:
...
<bb 3> [75.00%]:
# i_38 = PHI <i_11(4), 0(2)>
_34 = (sizetype) i_38;
_12 = _34 * 8;
_7 = &retval + _12;
_8 = s1_4(D) + _12;
_9 = MEM[(int *)_8];
MEM[(Element_t[2] &)_7][0] = _9; <----- store to retval
_10 = MEM[(int *)_8 + 4B];
MEM[(Element_t[2] &)_7][1] = _10;
i_11 = i_38 + 1;
if (i_11 == 3)
goto <bb 5>; [33.33%]
else
goto <bb 4>; [66.67%]
<bb 4> [50.00%]:
goto <bb 3>; [100.00%]
<bb 5> [25.00%]:
<bb 10> [25.00%]:
<bb 6> [75.00%]:
# i_39 = PHI <i_17(7), 0(10)>
_37 = (sizetype) i_39;
_35 = _37 * 8;
_13 = _3(D) + _35;
_14 = &retval + _35;
_15 = MEM[(int *)_14];
MEM[(Element_t[2] &)_13][0] = _15; <------ load from retval, stored to _3+x
_16 = MEM[(int *)_14 + 4B];
MEM[(Element_t[2] &)_13][1] = _16;
i_17 = i_39 + 1;
if (i_17 == 3)
goto <bb 8>; [33.33%]
else
goto <bb 7>; [66.67%]
<bb 7> [50.00%]:
goto <bb 6>; [100.00%]
...
return _3(D);
I can work on that, but any hint where such dependency should be caught?
More information about the Gcc-bugs
mailing list