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