https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107424
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For the non-simple loops, I guess the questions are if do i = x, y, 10000 is equivalent to for (i = x; i <= y; i += 10000) or not (especially regarding the in C UB cases of y being above INT_MAX - 10000), and also what to do about do i = x, y, z where the step is variable - in C/C++, we always know if the iterator is increasing or decreasing from the condition, except for != condition but in that case OpenMP requires the step to be compile time known 1 or -1. I'm afraid for Fortran we have no idea. And for non-rectangular loops like: !$omp do collapse(2) do i = x, y, s1 do j = z, 2 * i + w, s2 that is quite important...