1*404b540aSrobert #include <omp.h> 2*404b540aSrobert 3*404b540aSrobert extern void abort (void); 4*404b540aSrobert 5*404b540aSrobert int foo(void)6*404b540aSrobertfoo (void) 7*404b540aSrobert { 8*404b540aSrobert return 10; 9*404b540aSrobert } 10*404b540aSrobert main()11*404b540aSrobertmain () 12*404b540aSrobert { 13*404b540aSrobert int A = 0; 14*404b540aSrobert 15*404b540aSrobert #pragma omp parallel if (foo () > 10) shared (A) 16*404b540aSrobert { 17*404b540aSrobert A = omp_get_num_threads (); 18*404b540aSrobert } 19*404b540aSrobert 20*404b540aSrobert if (A != 1) 21*404b540aSrobert abort (); 22*404b540aSrobert 23*404b540aSrobert #pragma omp parallel if (foo () == 10) num_threads (3) shared (A) 24*404b540aSrobert { 25*404b540aSrobert A = omp_get_num_threads (); 26*404b540aSrobert } 27*404b540aSrobert 28*404b540aSrobert if (A != 3) 29*404b540aSrobert abort (); 30*404b540aSrobert 31*404b540aSrobert #pragma omp parallel if (foo () == 10) num_threads (foo ()) shared (A) 32*404b540aSrobert { 33*404b540aSrobert A = omp_get_num_threads (); 34*404b540aSrobert } 35*404b540aSrobert 36*404b540aSrobert if (A != 10) 37*404b540aSrobert abort (); 38*404b540aSrobert 39*404b540aSrobert return 0; 40*404b540aSrobert } 41