1*404b540aSrobert extern "C" void abort (void); 2*404b540aSrobert 3*404b540aSrobert void parallel(int a,int b)4*404b540aSrobertparallel (int a, int b) 5*404b540aSrobert { 6*404b540aSrobert int bad, LASTPRIV, LASTPRIV_SEC; 7*404b540aSrobert int i; 8*404b540aSrobert 9*404b540aSrobert a = b = 3; 10*404b540aSrobert 11*404b540aSrobert bad = 0; 12*404b540aSrobert 13*404b540aSrobert #pragma omp parallel firstprivate (a,b) shared (bad) num_threads (5) 14*404b540aSrobert { 15*404b540aSrobert if (a != 3 || b != 3) 16*404b540aSrobert bad = 1; 17*404b540aSrobert 18*404b540aSrobert #pragma omp for lastprivate (LASTPRIV) 19*404b540aSrobert for (i = 0; i < 10; i++) 20*404b540aSrobert LASTPRIV = i; 21*404b540aSrobert 22*404b540aSrobert #pragma omp sections lastprivate (LASTPRIV_SEC) 23*404b540aSrobert { 24*404b540aSrobert #pragma omp section 25*404b540aSrobert { LASTPRIV_SEC = 3; } 26*404b540aSrobert 27*404b540aSrobert #pragma omp section 28*404b540aSrobert { LASTPRIV_SEC = 42; } 29*404b540aSrobert } 30*404b540aSrobert 31*404b540aSrobert } 32*404b540aSrobert 33*404b540aSrobert if (LASTPRIV != 9) 34*404b540aSrobert abort (); 35*404b540aSrobert 36*404b540aSrobert if (LASTPRIV_SEC != 42) 37*404b540aSrobert abort (); 38*404b540aSrobert 39*404b540aSrobert if (bad) 40*404b540aSrobert abort (); 41*404b540aSrobert } 42*404b540aSrobert main()43*404b540aSrobertint main() 44*404b540aSrobert { 45*404b540aSrobert parallel (1, 2); 46*404b540aSrobert return 0; 47*404b540aSrobert } 48