[Bug tree-optimization/77283] [7 Regression] Revision 238005 disables loop unrolling
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jan 12 10:31:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77283
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #39469|0 |1
is obsolete| |
--- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 40508
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40508&action=edit
updated patch
Well, updated patch avoids to regress existing testcases (where they make
sense).
But it doesn't fix the s390 testcase (added as split-path-9.c) given we have
<bb 4> [85.00%]:
# i_15 = PHI <i_11(8), 0(3)>
# prephitmp_19 = PHI <prephitmp_17(8), pretmp_18(3)>
_2 = prephitmp_19 & 1;
if (_2 != 0)
goto <bb 5>; [50.00%]
else
goto <bb 6>; [50.00%]
<bb 5> [42.50%]:
_3 = prephitmp_19 ^ 1;
*state_9(D) = _3;
<bb 6> [85.00%]:
# prephitmp_17 = PHI <prephitmp_19(4), _3(5)>
i_11 = i_15 + 1;
if (i_11 != size_8(D))
goto <bb 8>; [85.00%]
else
goto <bb 7>; [15.00%]
<bb 8> [72.25%]:
goto <bb 4>; [100.00%]
where clearly threading is possible (and wanted). Unfortunately we do a pretty
bad job as followup (for whatever reason). We fail to transform this to an
early exit of the loop. Jump threading fails to thread away the & 1 check
as well.
More information about the Gcc-bugs
mailing list