[Fortran] OpenACC – permit common blocks in some clauses
[official-gcc.git] / gcc / testsuite / gfortran.dg / goacc / common-block-3.f90
blob9032d9331f07932c7948fb967a93d1e822e6e397
1 ! { dg-options "-fopenacc -fdump-tree-omplower" }
3 module consts
4 integer, parameter :: n = 100
5 end module consts
7 program main
8 use consts
9 implicit none
11 integer :: i, j
12 real :: a(n) = 0, b(n) = 0, c, d
13 real :: x(n) = 0, y(n), z
14 common /BLOCK/ a, b, c, j, d
15 common /KERNELS_BLOCK/ x, y, z
17 c = 1.0
18 !$acc parallel loop copy(/BLOCK/)
19 do i = 1, n
20 a(i) = b(i) + c
21 end do
22 !$acc kernels
23 do i = 1, n
24 x(i) = y(i) + c
25 end do
26 !$acc end kernels
27 end program main
29 ! { dg-final { scan-tree-dump-times "omp target oacc_parallel .*map\\(tofrom:a \\\[len: 400\\\]\\)" 1 "omplower" } }
30 ! { dg-final { scan-tree-dump-times "omp target oacc_parallel .*map\\(tofrom:b \\\[len: 400\\\]\\\)" 1 "omplower" } }
31 ! { dg-final { scan-tree-dump-times "omp target oacc_parallel .*map\\(tofrom:c \\\[len: 4\\\]\\)" 1 "omplower" } }
33 ! { dg-final { scan-tree-dump-times "omp target oacc_kernels .*map\\(force_tofrom:i \\\[len: 4\\\]\\)" 1 "omplower" } }
34 ! { dg-final { scan-tree-dump-times "omp target oacc_kernels .*map\\(tofrom:x \\\[len: 400\\\]\\)" 1 "omplower" } }
35 ! { dg-final { scan-tree-dump-times "omp target oacc_kernels .*map\\(tofrom:y \\\[len: 400\\\]\\\)" 1 "omplower" } }
36 ! { dg-final { scan-tree-dump-times "omp target oacc_kernels .*map\\(force_tofrom:c \\\[len: 4\\\]\\)" 1 "omplower" } }
38 ! { dg-final { scan-tree-dump-not "map\\(.*:block\\)" "omplower" } }
39 ! { dg-final { scan-tree-dump-not "map\\(.*:kernels_block\\)" "omplower" } }