https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61780
Mikael Morin <mikael at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mikael at gcc dot gnu.org --- Comment #1 from Mikael Morin <mikael at gcc dot gnu.org> --- This sets loop reversal in dependency.c: /* Set reverse if backward dependence and not inhibited. */ if (reverse && reverse[n] == GFC_ENABLE_REVERSE) reverse[n] = (this_dep == GFC_DEP_BACKWARD) ? GFC_REVERSE_SET : reverse[n]; However, the 'n' used indexes over array ref dimension, so in the case at hand the second element is flagged as GFC_REVERSE_SET. But the 'reverse' array is used later on using scalarizer dimensions, and as y(k,4:n) and y(k,3:n-1) are one-dimension arrays, only the first element of 'reverse' is ever looked at.