1! Check for invalid (and some valid) cases of multiple OpenACC 'routine' 2! directives. 3 4 SUBROUTINE s_1 5!$ACC ROUTINE VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } 6!$ACC ROUTINE(s_1) 7!$ACC ROUTINE GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 8!$ACC ROUTINE(s_1) SEQ 9!$ACC ROUTINE 10!$ACC ROUTINE(s_1) WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 11!$ACC ROUTINE GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } 12 END SUBROUTINE s_1 13 14 SUBROUTINE s_2 15!$ACC ROUTINE(s_2) VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } 16!$ACC ROUTINE 17!$ACC ROUTINE(s_2) GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 18!$ACC ROUTINE SEQ 19!$ACC ROUTINE(s_2) 20!$ACC ROUTINE WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 21!$ACC ROUTINE(s_2) GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } 22 END SUBROUTINE s_2 23 24 SUBROUTINE v_1 25!$ACC ROUTINE VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } 26!$ACC ROUTINE VECTOR 27!$ACC ROUTINE GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 28!$ACC ROUTINE SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 29!$ACC ROUTINE ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 30!$ACC ROUTINE(v_1) VECTOR 31!$ACC ROUTINE WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 32!$ACC ROUTINE GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } 33 END SUBROUTINE v_1 34 35 SUBROUTINE v_2 36!$ACC ROUTINE(v_2) VECTOR 37!$ACC ROUTINE(v_2) VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } 38!$ACC ROUTINE(v_2) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 39!$ACC ROUTINE VECTOR 40!$ACC ROUTINE(v_2) GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } 41 END SUBROUTINE v_2 42 43 SUBROUTINE sub_1 44 IMPLICIT NONE 45 EXTERNAL :: g_1 46!$ACC ROUTINE (g_1) GANG 47!$ACC ROUTINE (g_1) GANG WORKER ! { dg-error "Multiple loop axes specified for routine" } 48!$ACC ROUTINE (g_1) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 49!$ACC ROUTINE (g_1) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 50!$ACC ROUTINE (g_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 51!$ACC ROUTINE (g_1) GANG 52!$ACC ROUTINE (g_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 53 54 CALL s_1 55 CALL s_2 56 CALL v_1 57 CALL v_2 58 CALL g_1 59 CALL ABORT 60 END SUBROUTINE sub_1 61 62 MODULE m_w_1 63 IMPLICIT NONE 64 EXTERNAL :: w_1 65!$ACC ROUTINE (w_1) WORKER 66!$ACC ROUTINE (w_1) WORKER SEQ ! { dg-error "Multiple loop axes specified for routine" } 67!$ACC ROUTINE (w_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 68!$ACC ROUTINE (w_1) WORKER 69!$ACC ROUTINE (w_1) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 70!$ACC ROUTINE (w_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 71!$ACC ROUTINE (w_1) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } 72 73 CONTAINS 74 SUBROUTINE sub_2 75 CALL s_1 76 CALL s_2 77 CALL v_1 78 CALL v_2 79 CALL w_1 80 CALL ABORT 81 END SUBROUTINE sub_2 82 END MODULE m_w_1 83