https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106265
Vineet Gupta <vineetg at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vineetg at gcc dot gnu.org --- Comment #11 from Vineet Gupta <vineetg at gcc dot gnu.org> --- Revisited this with gcc-13. The reduced test case no longer shows the extraneous LI 4096 (although the full test still does). The key here is -funroll-loops which is needed for original issue to show as well. The was with middle-end update: commit 19295e8607da2f743368fe6f5708146616aafa91 Author: Richard Biener <rguent...@suse.de> Date: Mon Oct 24 09:51:32 2022 +0200 tree-optimization/100756 - niter analysis and folding niter analysis, specifically the part trying to simplify the computed maybe_zero condition against the loop header copying condition, is confused by us now simplifying _15 = n_8(D) * 4; if (_15 > 0) to _15 = n_8(D) * 4; if (n_8(D) > 0) which is perfectly sound at the point we do this transform. One solution might be to involve ranger in this simplification, another is to be more aggressive when expanding expressions - the condition we try to simplify is _15 > 0, so all we need is expanding that to n_8(D) * 4 > 0.