1! { dg-do run }
2
3program main
4  implicit none
5  real a, b
6  real c
7  !$acc declare create (c)
8
9  a = 2.0
10  b = 0.0
11
12  !$acc parallel copy (a) create (b) default (none)
13    b = a
14    a = 1.0
15    a = a + b
16  !$acc end parallel
17
18  if (a .ne. 3.0) STOP 1
19
20  !$acc kernels copy (a) create (b) default (none)
21    b = a
22    a = 1.0
23    a = a + b
24  !$acc end kernels
25
26  if (a .ne. 4.0) STOP 2
27
28  !$acc parallel default (none) copy (a) create (b)
29    b = a
30    a = 1.0
31    a = a + b
32  !$acc end parallel
33
34  if (a .ne. 5.0) STOP 3
35
36  !$acc parallel default (none) copy (a)
37    c = a
38    a = 1.0
39    a = a + c
40  !$acc end parallel
41
42  if (a .ne. 6.0) STOP 4
43
44  !$acc data copy (a)
45  !$acc parallel default (none)
46    c = a
47    a = 1.0
48    a = a + c
49  !$acc end parallel
50  !$acc end data
51
52  if (a .ne. 7.0) STOP 5
53
54  ! The default (present) clause doesn't affect scalar variables; these will
55  ! still get an implicit copy clause added.
56  !$acc kernels default (present)
57    c = a
58    a = 1.0
59    a = a + c
60  !$acc end kernels
61
62  if (a .ne. 8.0) STOP 6
63
64end program main
65