https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101291

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, the support is in GCC 9 as well and the niter analysis is the same so
there's sth else going on.  Btw, the assumptions are

Analyzing # of iterations of loop 1
  exit condition [start_3(D) + 16, + , 16] <= val_4(D)
  bounds on difference of bases: -16 ... 4294967295
  result:
    under assumptions val_4(D) <= 4294967279 && start_3(D) + 16 > 14
    # of iterations (val_4(D) - start_3(D)) / 16, bounded by 268435456

on trunk and

Analyzing # of iterations of loop 1
  exit condition [start_3(D) + 16, + , 16] <= val_4(D)
  bounds on difference of bases: -16 ... 4294967295
  result:
    under assumptions val_4(D) <= 4294967279 && start_3(D) + 16 > 14
    # of iterations (val_4(D) - start_3(D)) / 16, bounded by 268435456

on the GCC 9 branch.  On trunk the scalar loop fallback is misoptimized
by IVOPTs I think.  -fno-ivopts makes it work on trunk at least.  That said,
->assumptions is likely still at fault here.

Reply via email to