[Fortran] OpenACC – permit common blocks in some clauses
[official-gcc.git] / gcc / testsuite / gfortran.dg / goacc / common-block-1.f90
blobea437526b4641a92bee8f2be11cc7e797b88969c
1 ! Test data clauses involving common blocks and common block data.
2 ! Specifically, validates early matching errors.
4 subroutine subtest
5 implicit none
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
14 program test
15 implicit none
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)
25 !$acc end data
27 !$acc data copyin(/blockA/, /blockB/, e, v)
28 !$acc end data
30 !$acc data copyout(/blockA/, /blockB/, e, v)
31 !$acc end data
33 !$acc data create(/blockA/, /blockB/, e, v)
34 !$acc end data
36 !$acc data copyout(/blockA/, /blockB/, e, v)
37 !$acc end data
39 !$acc data pcopy(/blockA/, /blockB/, e, v)
40 !$acc end data
42 !$acc data pcopyin(/blockA/, /blockB/, e, v)
43 !$acc end data
45 !$acc data pcopyout(/blockA/, /blockB/, e, v)
46 !$acc end data
48 !$acc data pcreate(/blockA/, /blockB/, e, v)
49 !$acc end data
51 !$acc data pcopyout(/blockA/, /blockB/, e, v)
52 !$acc end data
54 !$acc parallel private(/blockA/, /blockB/, e, v)
55 !$acc end parallel
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/)
61 !$acc end parallel
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" }
74 end program test