[Bug tree-optimization/84648] Missed optimization : loop not removed.
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 1 15:25:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84648
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2018-03-01
Version|unknown |8.0.1
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. The issue seems to be that we prematurely optimize the compare to
(signed int) i < 0 and number of iteration analysis fails to handle
that.
The FE emits:
unsigned int i = 0;
goto <D.1960>;
<D.1959>:;
++i;
<D.1960>:;
if ((signed int) i >= 0) goto <D.1959>; else goto <D.1961>;
<D.1961>:;
(set_scalar_evolution
instantiated_below = 2
(scalar = i.0_1)
(scalar_evolution = (signed int) {0, +, 1}_1))
)
(analyze_scalar_evolution
(loop_nb = 1)
(scalar = 0)
(get_scalar_evolution
(scalar = 0)
(scalar_evolution = 0))
)
(set_nb_iterations_in_loop = scev_not_known))
we need to teach niter analysis this kind of trick.
Let me have a closer look.
More information about the Gcc-bugs
mailing list