xref: /llvm-project/openmp/runtime/test/tasking/issue-79416.c (revision 41ca9104ac1e0bf248d4082f45c5ad03ddd55727)
1*41ca9104SJonathan Peyton // RUN: %libomp-compile-and-run
2*41ca9104SJonathan Peyton #include <stdio.h>
3*41ca9104SJonathan Peyton #include <stdlib.h>
4*41ca9104SJonathan Peyton 
5*41ca9104SJonathan Peyton int a;
6*41ca9104SJonathan Peyton 
run(int nteams,int nth)7*41ca9104SJonathan Peyton void run(int nteams, int nth) {
8*41ca9104SJonathan Peyton   a = 0;
9*41ca9104SJonathan Peyton #pragma omp teams num_teams(nteams)
10*41ca9104SJonathan Peyton   {
11*41ca9104SJonathan Peyton #pragma omp parallel num_threads(nth)
12*41ca9104SJonathan Peyton     {
13*41ca9104SJonathan Peyton #pragma omp task
14*41ca9104SJonathan Peyton       {
15*41ca9104SJonathan Peyton #pragma omp atomic
16*41ca9104SJonathan Peyton         a++;
17*41ca9104SJonathan Peyton       }
18*41ca9104SJonathan Peyton     }
19*41ca9104SJonathan Peyton   }
20*41ca9104SJonathan Peyton   if (a == 0)
21*41ca9104SJonathan Peyton     exit(EXIT_FAILURE);
22*41ca9104SJonathan Peyton }
23*41ca9104SJonathan Peyton 
main()24*41ca9104SJonathan Peyton int main() {
25*41ca9104SJonathan Peyton   int i, nteams, nth;
26*41ca9104SJonathan Peyton   for (nteams = 1; nteams <= 2; ++nteams)
27*41ca9104SJonathan Peyton     for (nth = 1; nth <= 3; ++nth)
28*41ca9104SJonathan Peyton       for (i = 0; i < 10; ++i) {
29*41ca9104SJonathan Peyton         printf("run(%d, %d)\n", nteams, nth);
30*41ca9104SJonathan Peyton         run(nteams, nth);
31*41ca9104SJonathan Peyton       }
32*41ca9104SJonathan Peyton   return EXIT_SUCCESS;
33*41ca9104SJonathan Peyton }
34