xref: /llvm-project/flang/test/Semantics/OpenACC/acc-cache-validity.f90 (revision 72d8e47a2c345cfe163d91a2263ce01c3257cec2)
1! RUN: %python %S/../test_errors.py %s %flang -fopenacc
2
3! Check OpenACC clause validity for the following construct and directive:
4!   2.10 Cache
5
6program openacc_cache_validity
7
8  implicit none
9
10  type atype
11    real(8), dimension(10) :: arr
12    real(8) :: s
13  end type atype
14
15  integer :: i
16  integer, parameter :: N = 256
17  real(8), dimension(N, N) :: aa
18  type(atype) :: t
19  type(atype), dimension(10) :: ta
20  real(8), dimension(N) :: a
21
22  do i = 1, N
23
24  !$acc cache(a(i))
25  !$acc cache(a(1:2,3:4))
26  !$acc cache(a)
27  !$acc cache(readonly: a, aa)
28  !$acc cache(readonly: a(i), aa(i, i))
29  !$acc cache(t%arr)
30  !$acc cache(ta(1:2)%arr)
31  !$acc cache(ta(1:2)%arr(1:4))
32  !$acc cache(i)
33  !$acc cache(t%s)
34
35  !ERROR: Only array element or subarray are allowed in CACHE directive
36  !$acc cache(t)
37
38  !ERROR: Only array element or subarray are allowed in CACHE directive
39  !$acc cache(/i/)
40
41  end do
42
43  !ERROR: The CACHE directive must be inside a loop
44  !$acc cache(a)
45
46end program openacc_cache_validity
47