123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- ! PR fortran/42162
- ! { dg-do run }
- subroutine sub1(k, a)
- implicit none
- integer :: k, a(3)
- !$omp do
- do k=1,3
- a(k) = a(k) + 1
- enddo
- !$omp end do
- end subroutine sub1
- subroutine sub2(k, a)
- implicit none
- integer :: k, a(3)
- !$omp do private (k)
- do k=1,3
- a(k) = a(k) + 1
- enddo
- !$omp end do
- end subroutine sub2
- subroutine sub3(k, a)
- implicit none
- integer :: k, a(3)
- !$omp do lastprivate (k)
- do k=1,3
- a(k) = a(k) + 1
- enddo
- !$omp end do
- end subroutine sub3
- program pr42162
- implicit none
- integer :: k, a(3), b(3), c(3)
- a = 1
- b = 2
- c = 3
- k = 3
- !$omp parallel num_threads(3)
- call sub1 (k, a)
- !$omp end parallel
- k = 4
- !$omp parallel num_threads(3)
- call sub2 (k, b)
- !$omp end parallel
- k = 10
- !$omp parallel num_threads(3)
- call sub3 (k, c)
- !$omp end parallel
- if (k.ne.4.or.any(a.ne.2).or.any(b.ne.3).or.any(c.ne.4)) call abort
- end
|