1! Check for valid cases of multiple OpenACC 'routine' directives.
2
3      SUBROUTINE s_1
4!$ACC ROUTINE(s_1)
5!$ACC ROUTINE(s_1) SEQ
6!$ACC ROUTINE SEQ
7      END SUBROUTINE s_1
8
9      SUBROUTINE s_2
10!$ACC ROUTINE
11!$ACC ROUTINE SEQ
12!$ACC ROUTINE(s_2)
13      END SUBROUTINE s_2
14
15      SUBROUTINE v_1
16!$ACC ROUTINE VECTOR
17!$ACC ROUTINE VECTOR
18!$ACC ROUTINE(v_1) VECTOR
19!$ACC ROUTINE VECTOR
20      END SUBROUTINE v_1
21
22      SUBROUTINE v_2
23!$ACC ROUTINE(v_2) VECTOR
24!$ACC ROUTINE VECTOR
25!$ACC ROUTINE(v_2) VECTOR
26      END SUBROUTINE v_2
27
28      SUBROUTINE sub_1
29      IMPLICIT NONE
30      EXTERNAL :: g_1
31!$ACC ROUTINE (g_1) GANG
32!$ACC ROUTINE (g_1) GANG
33!$ACC ROUTINE (g_1) GANG
34
35      CALL s_1
36      CALL s_2
37      CALL v_1
38      CALL v_2
39      CALL g_1
40      CALL ABORT
41      END SUBROUTINE sub_1
42
43      MODULE m_w_1
44      IMPLICIT NONE
45      EXTERNAL :: w_1
46!$ACC ROUTINE (w_1) WORKER
47!$ACC ROUTINE (w_1) WORKER
48
49      CONTAINS
50      SUBROUTINE sub_2
51      CALL s_1
52      CALL s_2
53      CALL v_1
54      CALL v_2
55      CALL w_1
56      CALL ABORT
57      END SUBROUTINE sub_2
58      END MODULE m_w_1
59