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)) ! { dg-error "Stride should not be specified for array section in MAP clause" }
61  !$omp end target
62
63  !$omp target map(aas(5:))
64  !$omp end target
65  ! { dg-error "Rightmost upper bound of assumed size array section not specified" "" { target *-*-* } 63 }
66  ! { dg-error "'aas' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 63 }
67
68  !$omp target map(aas(:))
69  !$omp end target
70  ! { dg-error "Rightmost upper bound of assumed size array section not specified" "" { target *-*-* } 68 }
71  ! { dg-error "'aas' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 68 }
72
73  !$omp target map(aas) ! { dg-error "Assumed size array" }
74  !$omp end target
75
76  !$omp target map(aas(5:7))
77  !$omp end target
78
79  !$omp target map(aas(:7))
80  !$omp end target
81
82  !$omp target map(k(5:))
83  !$omp end target
84  ! { dg-error "Rank mismatch in array reference" "" { target *-*-* } 82 }
85  ! { dg-error "'k' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 82 }
86
87  !$omp target map(k(5:,:,3))
88  !$omp end target
89  ! { dg-error "Rank mismatch in array reference" "" { target *-*-* } 87 }
90  ! { dg-error "'k' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 87 }
91
92  !$omp target map(tt)
93  !$omp end target
94
95  !$omp target map(tt%i) ! { dg-error "Syntax error in OpenMP variable list" }
96  !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
97
98  !$omp target map(tt%j) ! { dg-error "Syntax error in OpenMP variable list" }
99  !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
100
101  ! broken test
102  !$omp target map(tt%j(1)) ! { dg-error "Syntax error in OpenMP variable list" }
103  !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
104
105  !$omp target map(tt%j(1:)) ! { dg-error "Syntax error in OpenMP variable list" }
106  !$omp end target ! { dg-error "Unexpected !\\\$OMP END TARGET statement" }
107
108  !$omp target map(tp) ! { dg-error "THREADPRIVATE object 'tp' in MAP clause" }
109  !$omp end target
110end subroutine test
111