1! This test exercises combined directives.
2
3! { dg-do run }
4
5program main
6  integer, parameter :: n = 32
7  real :: a(n), b(n);
8  integer :: i
9
10  do i = 1, n
11    a(i) = 1.0
12    b(i) = 0.0
13  end do
14
15  !$acc parallel loop copy (a(1:n)) copy (b(1:n))
16  do i = 1, n
17    b(i) = 2.0
18    a(i) = a(i) + b(i)
19  end do
20
21  do i = 1, n
22    if (a(i) .ne. 3.0) STOP 1
23
24    if (b(i) .ne. 2.0) STOP 2
25  end do
26
27  !$acc kernels loop copy (a(1:n)) copy (b(1:n))
28  do i = 1, n
29    b(i) = 3.0;
30    a(i) = a(i) + b(i)
31  end do
32
33  do i = 1, n
34    if (a(i) .ne. 6.0) STOP 3
35
36    if (b(i) .ne. 3.0) STOP 4
37  end do
38
39end program main
40