1subroutine test(aas)
2  implicit none
3
4  integer :: i, j(10), k(10, 10), aas(*)
5  integer, save :: tp
6  !$omp threadprivate(tp)
7  integer, parameter :: p = 1
8
9  type t
10    integer :: i, j(10)
11  end type t
12
13  type(t) :: tt
14
15  !$omp target map(i)
16  !$omp end target
17
18  !$omp target map(j)
19  !$omp end target
20
21  !$omp target map(p) ! { dg-error "Object 'p' is not a variable" }
22  !$omp end target
23
24  !$omp target map(j(1))
25  !$omp end target
26
27  !$omp target map(j(i))
28  !$omp end target
29
30  !$omp target map(j(i:))
31  !$omp end target
32
33  !$omp target map(j(:i))
34  !$omp end target
35
36  !$omp target map(j(i:i+1))
37  !$omp end target
38
39  !$omp target map(j(11)) ! { dg-warning "out of bounds" }
40  !$omp end target
41
42  !$omp target map(j(:11)) ! { dg-warning "out of bounds" }
43  !$omp end target
44
45  !$omp target map(j(0:)) ! { dg-warning "out of bounds" }
46  !$omp end target
47
48  !$omp target map(j(5:4))
49  !$omp end target
50
51  !$omp target map(j(5:))
52  !$omp end target
53
54  !$omp target map(j(:5))
55  !$omp end target
56
57  !$omp target map(j(:))
58  !$omp end target
59
60  !$omp target map(j(1:9:2))
61 ! { dg-error "Array is not contiguous" "" { target *-*-* } 60 }
62 ! { dg-error "Stride should not be specified for array section in MAP clause" "" { target *-*-* } 60 }
63  !$omp end target
64
65  !$omp target map(aas(5:))
66  !$omp end target
67  ! { dg-error "Rightmost upper bound of assumed size array section not specified" "" { target *-*-* } 65 }
68  ! { dg-error "'aas' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 65 }
69
70  !$omp target map(aas(:))
71  !$omp end target
72  ! { dg-error "Rightmost upper bound of assumed size array section not specified" "" { target *-*-* } 70 }
73  ! { dg-error "'aas' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 70 }
74
75  !$omp target map(aas) ! { dg-error "Assumed size array" }
76  !$omp end target
77
78  !$omp target map(aas(5:7))
79  !$omp end target
80
81  !$omp target map(aas(:7))
82  !$omp end target
83
84  !$omp target map(k(5:))
85  !$omp end target
86  ! { dg-error "Rank mismatch in array reference" "" { target *-*-* } 84 }
87  ! { dg-error "'k' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 84 }
88
89  !$omp target map(k(5:,:,3))
90  !$omp end target
91  ! { dg-error "Rank mismatch in array reference" "" { target *-*-* } 89 }
92  ! { dg-error "'k' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 89 }
93
94  !$omp target map(tt)
95  !$omp end target
96
97  !$omp target map(tt%k) ! { dg-error "not a member of" }
98  !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
99
100  !$omp target map(tt%j)
101  !$omp end target
102
103  !$omp target map(tt%j(1))
104  !$omp end target
105
106  !$omp target map(tt%j(1:))
107  !$omp end target
108
109  !$omp target map(tp) ! { dg-error "THREADPRIVATE object 'tp' in MAP clause" }
110  !$omp end target
111end subroutine test
112