xref: /llvm-project/openmp/runtime/test/tasking/bug_36720.c (revision 51fc3cc6281dc5dfbc1494e81c2f97c26c1886de)
128226e7dSJonathan Peyton // RUN: %libomp-compile-and-run
228226e7dSJonathan Peyton 
328226e7dSJonathan Peyton /*
428226e7dSJonathan Peyton Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=36720
528226e7dSJonathan Peyton 
628226e7dSJonathan Peyton Assertion failure at kmp_runtime.cpp(1715): nthreads > 0.
728226e7dSJonathan Peyton OMP: Error #13: Assertion failure at kmp_runtime.cpp(1715).
828226e7dSJonathan Peyton 
928226e7dSJonathan Peyton The assertion fails even with OMP_NUM_THREADS=1. If the second task is removed,
1028226e7dSJonathan Peyton everything runs to completion. If the "omp parallel for" directives are removed
1128226e7dSJonathan Peyton from inside the tasks, once again everything runs fine.
1228226e7dSJonathan Peyton */
1328226e7dSJonathan Peyton 
1428226e7dSJonathan Peyton #define N 1024
1528226e7dSJonathan Peyton 
main()1628226e7dSJonathan Peyton int main() {
1728226e7dSJonathan Peyton   #pragma omp task
1828226e7dSJonathan Peyton   {
19*51fc3cc6SJonas Hahnfeld     int i;
2028226e7dSJonathan Peyton     #pragma omp parallel for
21*51fc3cc6SJonas Hahnfeld     for (i = 0; i < N; i++)
2228226e7dSJonathan Peyton       (void)0;
2328226e7dSJonathan Peyton   }
2428226e7dSJonathan Peyton 
2528226e7dSJonathan Peyton   #pragma omp task
2628226e7dSJonathan Peyton   {
27*51fc3cc6SJonas Hahnfeld     int i;
2828226e7dSJonathan Peyton     #pragma omp parallel for
29*51fc3cc6SJonas Hahnfeld     for (i = 0; i < N; ++i)
3028226e7dSJonathan Peyton       (void)0;
3128226e7dSJonathan Peyton   }
3228226e7dSJonathan Peyton 
3328226e7dSJonathan Peyton   #pragma omp taskwait
3428226e7dSJonathan Peyton 
3528226e7dSJonathan Peyton   return 0;
3628226e7dSJonathan Peyton }
37