1! Test various aspects of clauses specifying compatible levels of
2! parallelism with the OpenACC routine directive.  The Fortran counterpart is
3! c-c++-common/goacc/routine-level-of-parallelism-2.c
4
5subroutine g_1
6  !$acc routine gang
7end subroutine g_1
8
9subroutine s_1_2a
10  !$acc routine
11end subroutine s_1_2a
12
13subroutine s_1_2b
14  !$acc routine seq
15end subroutine s_1_2b
16
17subroutine s_1_2c
18  !$acc routine (s_1_2c)
19end subroutine s_1_2c
20
21subroutine s_1_2d
22  !$acc routine (s_1_2d) seq
23end subroutine s_1_2d
24
25module s_2
26contains
27  subroutine s_2_1a
28    !$acc routine
29  end subroutine s_2_1a
30
31  subroutine s_2_1b
32    !$acc routine seq
33  end subroutine s_2_1b
34
35  subroutine s_2_1c
36    !$acc routine (s_2_1c)
37  end subroutine s_2_1c
38
39  subroutine s_2_1d
40    !$acc routine (s_2_1d) seq
41  end subroutine s_2_1d
42end module s_2
43
44subroutine test
45  external g_1, w_1, v_1
46  external s_1_1, s_1_2
47
48  interface
49     function s_3_1a (a)
50       integer a
51       !$acc routine
52     end function s_3_1a
53  end interface
54
55  interface
56     function s_3_1b (a)
57       integer a
58       !$acc routine seq
59     end function s_3_1b
60  end interface
61
62  !$acc routine(g_1) gang
63
64  !$acc routine(w_1) worker
65
66  !$acc routine(v_1) worker
67
68  ! Also test the implicit seq clause.
69
70  !$acc routine (s_1_1) seq
71
72end subroutine test
73