1 ! Test data clauses involving common blocks and common block data.
2 ! Specifically, validates early matching errors.
6 integer, parameter :: n
= 10
7 integer a(n
), b(n
), c
, d(n
), e
8 real*4 x(n
), y(n
), z
, w(n
), v
9 common /blockA
/ a
, c
, x
10 common /blockB
/ b
, y
, z
11 !$acc declare link(/blockA/, /blockB/, e, v)
12 end subroutine subtest
16 integer, parameter :: n
= 10
17 integer a(n
), b(n
), c
, d(n
), e
18 real*4 x(n
), y(n
), z
, w(n
), v
19 common /blockA
/ a
, c
, x
20 common /blockB
/ b
, y
, z
22 !$acc declare link(/blockA/, /blockB/, e, v)
24 !$acc data copy(/blockA/, /blockB/, e, v)
27 !$acc data copyin(/blockA/, /blockB/, e, v)
30 !$acc data copyout(/blockA/, /blockB/, e, v)
33 !$acc data create(/blockA/, /blockB/, e, v)
36 !$acc data copyout(/blockA/, /blockB/, e, v)
39 !$acc data pcopy(/blockA/, /blockB/, e, v)
42 !$acc data pcopyin(/blockA/, /blockB/, e, v)
45 !$acc data pcopyout(/blockA/, /blockB/, e, v)
48 !$acc data pcreate(/blockA/, /blockB/, e, v)
51 !$acc data pcopyout(/blockA/, /blockB/, e, v)
54 !$acc parallel private(/blockA/, /blockB/, e, v)
57 !$acc parallel firstprivate(/blockA/, /blockB/, e, v)
58 !$acc update device(/blockA/)
59 !$acc update self(/blockB/, v)
60 !$acc update host(/blockA/, e, /blockB/)
63 !$acc enter data pcopyin(/blockA/, /blockB/, e, v)
64 !$acc exit data delete(/blockA/, /blockB/, e, v)
67 ! No /block/ permitted in present and deviceptr:
69 !$acc data present(/blockA/, /blockB/, e, v) ! { dg-error "Syntax error in OpenMP variable list" }
70 !$acc end data ! { dg-error "Unexpected ..ACC END DATA statement" }
72 !$acc data deviceptr(/blockA/, /blockB/, e, v) ! { dg-error "Syntax error in OpenMP variable list" }
73 !$acc end data ! { dg-error "Unexpected ..ACC END DATA statement" }