|  | /* Test various aspects of clauses specifying compatible levels of parallelism | 
|  | with the OpenACC 'routine' directive.  The Fortran counterpart is | 
|  | '../../gfortran.dg/goacc/routine-level-of-parallelism-1.f90'.  */ | 
|  |  | 
|  | /* { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting | 
|  | aspects of that functionality.  */ | 
|  |  | 
|  | #pragma acc routine gang | 
|  | /* { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .+3 } | 
|  | { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .+2 } | 
|  | { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .+1 } */ | 
|  | void g_1 (void) | 
|  | { | 
|  | } | 
|  | #pragma acc routine (g_1) gang | 
|  | #pragma acc routine (g_1) gang | 
|  |  | 
|  |  | 
|  | extern void w_1 (void); | 
|  | #pragma acc routine (w_1) worker | 
|  | #pragma acc routine (w_1) worker | 
|  | #pragma acc routine (w_1) worker | 
|  |  | 
|  |  | 
|  | #pragma acc routine vector | 
|  | extern void v_1 (void); | 
|  | #pragma acc routine (v_1) vector | 
|  | #pragma acc routine (v_1) vector | 
|  |  | 
|  |  | 
|  | /* Also test the implicit seq clause.  */ | 
|  |  | 
|  | #pragma acc routine seq | 
|  | extern void s_1_1 (void); | 
|  | #pragma acc routine (s_1_1) | 
|  | #pragma acc routine (s_1_1) seq | 
|  | #pragma acc routine (s_1_1) | 
|  | #pragma acc routine (s_1_1) seq | 
|  |  | 
|  | #pragma acc routine | 
|  | extern void s_1_2 (void); | 
|  | #pragma acc routine (s_1_2) | 
|  | #pragma acc routine (s_1_2) seq | 
|  | #pragma acc routine (s_1_2) | 
|  | #pragma acc routine (s_1_2) seq | 
|  |  | 
|  | extern void s_2_1 (void); | 
|  | #pragma acc routine (s_2_1) seq | 
|  | #pragma acc routine (s_2_1) | 
|  | #pragma acc routine (s_2_1) seq | 
|  | #pragma acc routine (s_2_1) | 
|  | #pragma acc routine (s_2_1) seq | 
|  |  | 
|  | extern void s_2_2 (void); | 
|  | #pragma acc routine (s_2_2) | 
|  | #pragma acc routine (s_2_2) | 
|  | #pragma acc routine (s_2_2) seq | 
|  | #pragma acc routine (s_2_2) | 
|  | #pragma acc routine (s_2_2) seq | 
|  |  | 
|  | #pragma acc routine seq | 
|  | void s_3_1 (void) | 
|  | { | 
|  | } | 
|  | #pragma acc routine (s_3_1) | 
|  | #pragma acc routine (s_3_1) seq | 
|  | #pragma acc routine (s_3_1) | 
|  | #pragma acc routine (s_3_1) seq | 
|  |  | 
|  | #pragma acc routine | 
|  | void s_3_2 (void) | 
|  | { | 
|  | } | 
|  | #pragma acc routine (s_3_2) | 
|  | #pragma acc routine (s_3_2) seq | 
|  | #pragma acc routine (s_3_2) | 
|  | #pragma acc routine (s_3_2) seq |