/* { dg-do compile } */ #define N 100 int main (void) { int x = 0; int y = 0; /* Test implicit default (nothing). */ #pragma omp metadirective \ when (device={arch("nvptx")}: barrier) x = 1; /* Test with multiple standalone directives. */ #pragma omp metadirective \ when (device={arch("nvptx")}: barrier) \ default (flush) x = 1; /* Test combining a standalone directive with one that takes a statement body. */ #pragma omp metadirective \ when (device={arch("nvptx")}: parallel) \ default (barrier) x = 1; /* Test combining a standalone directive with one that takes a for loop. */ #pragma omp metadirective \ when (device={arch("nvptx")}: parallel for) \ default (barrier) for (int i = 0; i < N; i++) x += i; /* Test combining a directive that takes a for loop with one that takes a regular statement body. */ #pragma omp metadirective \ when (device={arch("nvptx")}: parallel for) \ default (parallel) for (int i = 0; i < N; i++) x += i; /* Test labels inside statement body. */ #pragma omp metadirective \ when (device={arch("nvptx")}: teams num_teams(512)) \ when (device={arch("gcn")}: teams num_teams(256)) \ default (teams num_teams(4)) { if (x) goto l1; else goto l2; l1: ; l2: ; } /* Test local labels inside statement body. */ #pragma omp metadirective \ when (device={arch("nvptx")}: teams num_teams(512)) \ when (device={arch("gcn")}: teams num_teams(256)) \ default (teams num_teams(4)) { //__label__ l1, l2; if (x) goto l1; else goto l2; l1: ; l2: ; } return 0; }