https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62173
--- Comment #40 from amker at gcc dot gnu.org --- The issue array reference not recognized as IV is resolved now. From gimple optimizer's view, there is still another issue in which loop header is bloated because of lose of signness information. The root cause is we use sizetype for addresses, and unsigned type (unsigned int in this case) for loop niter. We need to prove (sizetype)(unsigned int)(i - 1) equals to (sizetype)(i-1) in this case by using VRP/loop initial conditions. I am fixing this now.