| /* Test various aspects of clauses specifying incompatible levels of |
| parallelism with the OpenACC 'routine' directive. */ |
| |
| extern void g_1 (void); |
| #pragma acc routine (g_1) gang gang /* { dg-error "too many 'gang' clauses" } */ |
| |
| #pragma acc routine worker worker /* { dg-error "too many 'worker' clauses" } */ |
| void w_1 (void) |
| { |
| } |
| |
| #pragma acc routine vector vector /* { dg-error "too many 'vector' clauses" } */ |
| void v_1 (void) |
| { |
| } |
| |
| #pragma acc routine seq seq /* { dg-error "too many 'seq' clauses" } */ |
| extern void s_1 (void); |
| |
| |
| #pragma acc routine gang gang gang /* { dg-error "too many 'gang' clauses" } */ |
| void g_2 (void) |
| { |
| } |
| |
| #pragma acc routine worker worker worker /* { dg-error "too many 'worker' clauses" } */ |
| extern void w_2 (void); |
| |
| extern void v_2 (void); |
| #pragma acc routine (v_2) vector vector vector /* { dg-error "too many 'vector' clauses" } */ |
| |
| #pragma acc routine seq seq seq /* { dg-error "too many 'seq' clauses" } */ |
| void s_2 (void) |
| { |
| } |
| |
| |
| #pragma acc routine \ |
| gang \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ |
| void g_3 (void) |
| { |
| } |
| #pragma acc routine (g_3) \ |
| gang \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (g_3) \ |
| gang \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ |
| |
| extern void w_3 (void); |
| #pragma acc routine (w_3) \ |
| worker \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (w_3) \ |
| worker \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (w_3) \ |
| worker \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ |
| |
| #pragma acc routine \ |
| vector \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ |
| void v_3 (void) |
| { |
| } |
| #pragma acc routine (v_3) \ |
| vector \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (v_3) \ |
| vector \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| |
| extern void s_3 (void); |
| #pragma acc routine (s_3) \ |
| seq \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (s_3) \ |
| seq \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (s_3) \ |
| seq \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ |
| |
| |
| #pragma acc routine \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ |
| extern void g_4 (void); |
| #pragma acc routine (g_4) \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (g_4) \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ |
| |
| extern void w_4 (void); |
| #pragma acc routine (w_4) \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (w_4) \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (w_4) \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ |
| |
| #pragma acc routine \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| void v_4 (void) |
| { |
| } |
| #pragma acc routine (v_4) \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (v_4) \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ \ |
| seq /* { dg-error ".seq. specifies a conflicting level of parallelism" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ |
| |
| #pragma acc routine \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| void s_4 (void) |
| { |
| } |
| #pragma acc routine (s_4) \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ |
| #pragma acc routine (s_4) \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| worker /* { dg-error ".worker. specifies a conflicting level of parallelism" } */ \ |
| vector /* { dg-error ".vector. specifies a conflicting level of parallelism" } */ \ |
| gang /* { dg-error ".gang. specifies a conflicting level of parallelism" } */ |
| |
| |
| #pragma acc routine \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| void g_5 (void) |
| { |
| } |
| #pragma acc routine (g_5) \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (g_5) \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| #pragma acc routine \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| extern void w_5 (void); |
| #pragma acc routine (w_5) \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (w_5) \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| #pragma acc routine \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| extern void v_5 (void); |
| #pragma acc routine (v_5) \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| seq seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (v_5) \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| extern void s_5 (void); |
| #pragma acc routine (s_5) \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (s_5) \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (s_5) \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| |
| /* Like the *_5 tests, but with the order of clauses changed in the second and |
| following routine directives for the specific *_5 function. */ |
| |
| #pragma acc routine \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| void g_6 (void) |
| { |
| } |
| #pragma acc routine (g_6) \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*g_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (g_6) \ |
| seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*g_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| gang gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| #pragma acc routine \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| extern void w_6 (void); |
| #pragma acc routine (w_6) \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*w_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (w_6) \ |
| seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*w_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| #pragma acc routine \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| extern void v_6 (void); |
| #pragma acc routine (v_6) \ |
| seq seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*v_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (v_6) \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error "incompatible .gang. clause when applying .#pragma acc routine. to .\[void \]*v_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| seq seq seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| extern void s_6 (void); |
| #pragma acc routine (s_6) \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (s_6) \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*s_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| worker worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error ".worker. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| #pragma acc routine (s_6) \ |
| worker worker /* { dg-error "too many 'worker' clauses" } */ \ |
| /* { dg-error "incompatible .worker. clause when applying .#pragma acc routine. to .\[void \]*s_6\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" "" { target *-*-* } .-1 } */ \ |
| seq seq seq /* { dg-error "too many 'seq' clauses" } */ \ |
| /* { dg-error ".seq. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| vector vector vector vector /* { dg-error "too many 'vector' clauses" } */ \ |
| /* { dg-error ".vector. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ \ |
| gang gang /* { dg-error "too many 'gang' clauses" } */ \ |
| /* { dg-error ".gang. specifies a conflicting level of parallelism" "" { target *-*-* } .-1 } */ |
| |
| |
| /* Like the *_6 tests, but without all the duplicate clauses, so that the |
| routine directives are valid in isolation. */ |
| |
| #pragma acc routine \ |
| gang |
| void g_7 (void) |
| { |
| } |
| #pragma acc routine (g_7) \ |
| vector /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*g_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| #pragma acc routine (g_7) \ |
| seq /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*g_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| #pragma acc routine \ |
| worker |
| extern void w_7 (void); |
| #pragma acc routine (w_7) \ |
| vector /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*w_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| #pragma acc routine (w_7) \ |
| seq /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*w_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| #pragma acc routine \ |
| vector |
| extern void v_7 (void); |
| #pragma acc routine (v_7) \ |
| seq /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*v_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| #pragma acc routine (v_7) \ |
| gang /* { dg-error "incompatible .gang. clause when applying .#pragma acc routine. to .\[void \]*v_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| extern void s_7 (void); |
| #pragma acc routine (s_7) \ |
| seq |
| #pragma acc routine (s_7) \ |
| vector /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*s_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| #pragma acc routine (s_7) \ |
| worker /* { dg-error "incompatible .worker. clause when applying .#pragma acc routine. to .\[void \]*s_7\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| |
| /* Test cases for implicit seq clause. */ |
| |
| #pragma acc routine \ |
| gang |
| void g_8 (void) |
| { |
| } |
| #pragma acc routine (g_8) /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*g_8\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| #pragma acc routine \ |
| worker |
| extern void w_8 (void); |
| #pragma acc routine (w_8) /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*w_8\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| #pragma acc routine \ |
| vector |
| extern void v_8 (void); |
| #pragma acc routine (v_8) /* { dg-error "incompatible .seq. clause when applying .#pragma acc routine. to .\[void \]*v_8\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| |
| extern void s_8 (void); |
| #pragma acc routine (s_8) |
| #pragma acc routine (s_8) \ |
| vector /* { dg-error "incompatible .vector. clause when applying .#pragma acc routine. to .\[void \]*s_8\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| #pragma acc routine (s_8) \ |
| gang /* { dg-error "incompatible .gang. clause when applying .#pragma acc routine. to .\[void \]*s_8\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |
| #pragma acc routine (s_8) \ |
| worker /* { dg-error "incompatible .worker. clause when applying .#pragma acc routine. to .\[void \]*s_8\[\\(\\)\]*., which has already been marked with an OpenACC 'routine' directive" } */ |