| ! { dg-do run } |
| |
| program firstprivate |
| integer, parameter :: Nupper=100 |
| integer :: a, b(Nupper), c, d, n |
| include "openacc_lib.h" |
| |
| if (acc_get_device_type () .ne. acc_device_host) then |
| n = Nupper |
| else |
| n = 1 |
| end if |
| |
| b(:) = -1 |
| a = 5 |
| |
| !$acc parallel firstprivate (a) num_gangs (n) |
| !$acc loop gang |
| do i = 1, n |
| a = a + i |
| b(i) = a |
| end do |
| !$acc end parallel |
| |
| do i = 1, n |
| if (b(i) .ne. i + a) STOP 1 |
| end do |
| |
| !$acc data copy (a) |
| !$acc parallel firstprivate (a) copyout (c) |
| a = 10 |
| c = a |
| !$acc end parallel |
| |
| !$acc parallel copyout (d) present (a) |
| d = a |
| !$acc end parallel |
| !$acc end data |
| |
| if (c .ne. 10) STOP 2 |
| if (d .ne. 5) STOP 3 |
| end program firstprivate |