extern "C" void abort (void); void parallel (int a, int b) { int bad, LASTPRIV, LASTPRIV_SEC; int i; a = b = 3; bad = 0; #pragma omp parallel firstprivate (a,b) shared (bad) num_threads (5) { if (a != 3 || b != 3) bad = 1; #pragma omp for lastprivate (LASTPRIV) for (i = 0; i < 10; i++) LASTPRIV = i; #pragma omp sections lastprivate (LASTPRIV_SEC) { #pragma omp section { LASTPRIV_SEC = 3; } #pragma omp section { LASTPRIV_SEC = 42; } } } if (LASTPRIV != 9) abort (); if (LASTPRIV_SEC != 42) abort (); if (bad) abort (); } int main() { parallel (1, 2); return 0; }