https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113808
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- With the following I don't see things going wrong, but we end up with the loop having the STOP exit last instead and thus a PEELED case. function bar (n) result (k) integer :: n, k !$omp simd lastprivate(k) do k = 1, n + 41 if (k > 11 + 41 .or. k < 1) error stop end do end program main integer :: n, i,k integer :: bar n = 11 k = bar (n) if (k /= 53) then print *, k, 53 error stop endif end