[Bug tree-optimization/86270] [8/9 Regression] Simple loop needs an extra register and an extra instruction
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 22 07:53:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86270
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2018-06-22
Known to work| |7.3.1
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Target Milestone|--- |8.2
Summary|Simple loop needs an extra |[8/9 Regression] Simple
|register and an extra |loop needs an extra
|instruction |register and an extra
| |instruction
Ever confirmed|0 |1
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
This looks somewhat related to the fixes circulating for PR70359 by Aldhy and
myself.
Basically at out-of-SSA time we should try measures to allow coalescing of
SSA vars across backedges which in this case cannot happen because of the
life-range overlap.
Not sure if for
<bb 4> [local count: 955630224]:
# ivtmp.3_18 = PHI <0(3), ivtmp.3_19(4)>
i_16 = (int) ivtmp.3_18;
MEM[base: a.0_1, index: ivtmp.3_18, step: 4, offset: 0B] = i_16;
ivtmp.3_14 = ivtmp.3_18 + 1;
ivtmp.3_19 = ivtmp.3_14;
if (_6 != ivtmp.3_18)
goto <bb 4>; [89.00%]
else
goto <bb 5>; [11.00%]
we can somehow "undo" the change easily. I guess adjusting _6 to
_6 + 1 and then comparing against ivtmp.3_14 might work (not to
say there's a not propagated out copy resulting likely from late
forwprop).
I need to revisit the PR70359 fixes for GCC9 so let me take this one as well.
More information about the Gcc-bugs
mailing list