| #include <stdio.h> |
| #include <omp.h> |
| |
| extern 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; |
| } |