https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95109
--- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- Reduced testcase: ! { dg-do compile } module target1 contains subroutine foo (n, o, p, q, r, pp) integer :: n, o, p, q, r, s, i, j integer :: a (2:o) integer, pointer :: pp !$omp target data device (n + 1) if (n .ne. 6) map (tofrom: n, r) !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & !$omp & default(shared) shared(n) private (p) reduction(+:r) !$omp distribute parallel do simd if(n.ne.6)default(shared)& !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & !$omp & dist_schedule (static, 4) collapse (2) safelen(8) & !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) & !$omp & schedule (static, 8) do i = 1, 10 do j = 1, 10 r = r + 1 p = q a(2+i*10+j) = p + q s = i * 10 + j end do end do !$omp end target teams !$omp end target data end subroutine end module