1! { dg-do compile }
2! { dg-additional-options "-fmax-errors=100" }
3
4! test clauses added in OpenACC ver 2.0
5
6program test
7  implicit none
8  integer :: i, a(10), b(5:7)
9  integer, parameter :: acc_async_noval = -1
10  integer, parameter :: acc_async_sync = -2
11  logical :: l
12
13  ! async
14  !$acc kernels async(i)
15  !$acc end kernels
16  !$acc parallel async(i)
17  !$acc end parallel
18
19  !$acc kernels async(0, 1) { dg-error "Failed to match clause" }
20  !$acc parallel async(0, 1) { dg-error "Failed to match clause" }
21
22  !$acc kernels async
23  !$acc end kernels
24  !$acc parallel async
25  !$acc end parallel
26
27  !$acc kernels async(acc_async_noval)
28  !$acc end kernels
29  !$acc parallel async(acc_async_noval)
30  !$acc end parallel
31
32  !$acc kernels async(acc_async_sync)
33  !$acc end kernels
34  !$acc parallel async(acc_async_sync)
35  !$acc end parallel
36
37  !$acc kernels async() { dg-error "Invalid character" }
38  !$acc parallel async() { dg-error "Invalid character" }
39
40  !$acc kernels async("a") { dg-error "Failed to match clause" }
41  !$acc parallel async("a") { dg-error "Failed to match clause" }
42
43  !$acc kernels async(.true.) { dg-error "Failed to match clause" }
44  !$acc parallel async(.true.) { dg-error "Failed to match clause" }
45
46  ! default(none)
47  !$acc kernels default(none)
48  !$acc end kernels
49  !$acc parallel default(none)
50  !$acc end parallel
51
52  !$acc kernels default (none)
53  !$acc end kernels
54  !$acc parallel default (none)
55  !$acc end parallel
56
57  !$acc kernels default ( none )
58  !$acc end kernels
59  !$acc parallel default ( none )
60  !$acc end parallel
61
62  !$acc kernels default { dg-error "Failed to match clause" }
63  !$acc parallel default { dg-error "Failed to match clause" }
64
65  !$acc kernels default() { dg-error "Failed to match clause" }
66  !$acc parallel default() { dg-error "Failed to match clause" }
67
68  !$acc kernels default(i) { dg-error "Failed to match clause" }
69  !$acc parallel default(i) { dg-error "Failed to match clause" }
70
71  !$acc kernels default(1) { dg-error "Failed to match clause" }
72  !$acc parallel default(1) { dg-error "Failed to match clause" }
73
74  ! Wait
75  !$acc kernels wait (l) ! { dg-error "INTEGER" }
76  !$acc end kernels
77  !$acc kernels wait (.true.) ! { dg-error "INTEGER" }
78  !$acc end kernels
79  !$acc kernels wait (i, 1)
80  !$acc end kernels
81  !$acc kernels wait (a) ! { dg-error "INTEGER" }
82  !$acc end kernels
83  !$acc kernels wait (b(5:6)) ! { dg-error "INTEGER" }
84  !$acc end kernels
85
86  !$acc parallel wait (l) ! { dg-error "INTEGER" }
87  !$acc end parallel
88  !$acc parallel wait (.true.) ! { dg-error "INTEGER" }
89  !$acc end parallel
90  !$acc parallel wait (i, 1)
91  !$acc end parallel
92  !$acc parallel wait (a) ! { dg-error "INTEGER" }
93  !$acc end parallel
94  !$acc parallel wait (b(5:6)) ! { dg-error "INTEGER" }
95  !$acc end parallel
96end
97