1! { dg-do run } 2program foo 3 integer :: i, j, k 4 integer :: a(10), c(10) 5 k = 2 6 a(:) = 0 7 call test1 8 call test2 9 do i = 1, 10 10 if (a(i) .ne. 10 * i) stop 1 11 end do 12 !$omp parallel do reduction (+:c) 13 do i = 1, 10 14 c = c + a 15 end do 16 do i = 1, 10 17 if (c(i) .ne. 10 * a(i)) stop 2 18 end do 19 !$omp parallel do lastprivate (j) 20 do j = 1, 10, k 21 end do 22 if (j .ne. 11) stop 3 23contains 24 subroutine test1 25 integer :: i 26 integer :: b(10) 27 do i = 1, 10 28 b(i) = i 29 end do 30 c(:) = 0 31 !$omp parallel do reduction (+:a) 32 do i = 1, 10 33 a = a + b 34 end do 35 end subroutine test1 36 subroutine test2 37 !$omp parallel do lastprivate (j) 38 do j = 1, 10, k 39 end do 40 if (j .ne. 11) stop 4 41 end subroutine test2 42end program foo 43