| #pragma omp declare target |
| #pragma acc routine seq /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f1\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| void f1 (void) {} |
| #pragma omp end declare target |
| |
| #pragma omp declare target |
| void f1 (void); |
| |
| #pragma acc routine seq /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f1\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| void f1 (void); |
| |
| |
| |
| #pragma omp declare target |
| #pragma acc routine /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f2\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| extern void f2 (void); |
| #pragma omp end declare target |
| |
| #pragma omp declare target |
| extern void f2 (void); |
| #pragma omp end declare target |
| |
| #pragma acc routine gang /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f2\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| extern void f2 (void); |
| |
| |
| #pragma omp declare target |
| #pragma acc routine gang /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f3\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| void f3 (void); |
| #pragma omp end declare target |
| |
| #pragma omp declare target |
| void f3 (void) {} |
| #pragma omp end declare target |
| |
| #pragma acc routine (f3) gang /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f3\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| |
| |
| /* Surprisingly, this diagnosis also works for '#pragma acc routine' first, |
| followed by '#pragma omp declare target'; the latter gets applied first. */ |
| |
| |
| #pragma acc routine /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f4\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| extern void f4 (void); |
| |
| #pragma omp declare target |
| extern void f4 (void); |
| #pragma omp end declare target |
| |
| |
| #pragma acc routine gang /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f5\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ |
| void f5 (void) {} |
| |
| #pragma omp declare target |
| extern void f5 (void); |
| #pragma omp end declare target |