1*1fbdb03bSAndreyChurbanov // RUN: %libomp-compile-and-run 2*1fbdb03bSAndreyChurbanov 3*1fbdb03bSAndreyChurbanov #include <stdio.h> 4*1fbdb03bSAndreyChurbanov #include <stdlib.h> 5*1fbdb03bSAndreyChurbanov #include <omp.h> 6*1fbdb03bSAndreyChurbanov main()7*1fbdb03bSAndreyChurbanovint main() 8*1fbdb03bSAndreyChurbanov { 9*1fbdb03bSAndreyChurbanov int res; 10*1fbdb03bSAndreyChurbanov res = omp_in_explicit_task(); 11*1fbdb03bSAndreyChurbanov if (res) { 12*1fbdb03bSAndreyChurbanov printf("error: omp_in_explicit_task: serial1 returned %d\n", res); 13*1fbdb03bSAndreyChurbanov return 1; 14*1fbdb03bSAndreyChurbanov } 15*1fbdb03bSAndreyChurbanov #pragma omp parallel num_threads(2) 16*1fbdb03bSAndreyChurbanov { 17*1fbdb03bSAndreyChurbanov int r = omp_in_explicit_task(); 18*1fbdb03bSAndreyChurbanov if (r) { 19*1fbdb03bSAndreyChurbanov printf("error: omp_in_explicit_task: par #%d returned %d\n", 20*1fbdb03bSAndreyChurbanov omp_get_thread_num(), r); 21*1fbdb03bSAndreyChurbanov exit(1); 22*1fbdb03bSAndreyChurbanov } 23*1fbdb03bSAndreyChurbanov #pragma omp task 24*1fbdb03bSAndreyChurbanov { 25*1fbdb03bSAndreyChurbanov int r = omp_in_explicit_task(); 26*1fbdb03bSAndreyChurbanov if (!r) { 27*1fbdb03bSAndreyChurbanov printf("error: omp_in_explicit_task: task1 #%d returned %d\n", 28*1fbdb03bSAndreyChurbanov omp_get_thread_num(), r); 29*1fbdb03bSAndreyChurbanov exit(1); 30*1fbdb03bSAndreyChurbanov } 31*1fbdb03bSAndreyChurbanov } 32*1fbdb03bSAndreyChurbanov #pragma omp task 33*1fbdb03bSAndreyChurbanov { 34*1fbdb03bSAndreyChurbanov int r = omp_in_explicit_task(); 35*1fbdb03bSAndreyChurbanov if (!r) { 36*1fbdb03bSAndreyChurbanov printf("error: omp_in_explicit_task: task2 #%d returned %d\n", 37*1fbdb03bSAndreyChurbanov omp_get_thread_num(), r); 38*1fbdb03bSAndreyChurbanov exit(1); 39*1fbdb03bSAndreyChurbanov } 40*1fbdb03bSAndreyChurbanov } 41*1fbdb03bSAndreyChurbanov } 42*1fbdb03bSAndreyChurbanov res = omp_in_explicit_task(); 43*1fbdb03bSAndreyChurbanov if (res) { 44*1fbdb03bSAndreyChurbanov printf("error: omp_in_explicit_task: serial2 returned %d\n", res); 45*1fbdb03bSAndreyChurbanov return 1; 46*1fbdb03bSAndreyChurbanov } 47*1fbdb03bSAndreyChurbanov printf("passed\n"); 48*1fbdb03bSAndreyChurbanov return 0; 49*1fbdb03bSAndreyChurbanov } 50