extern void abort (void); | |
int | |
f1 (void) | |
{ | |
int a = 6, e = 0; | |
int nested (int x) | |
{ | |
return x + a; | |
} | |
#pragma omp task | |
{ | |
int n = nested (5); | |
if (n != 11) | |
#pragma omp atomic | |
e += 1; | |
} | |
#pragma omp taskwait | |
return e; | |
} | |
int | |
f2 (void) | |
{ | |
int a = 6, e = 0; | |
int nested (int x) | |
{ | |
return x + a; | |
} | |
a = nested (4); | |
#pragma omp task | |
{ | |
if (a != 10) | |
#pragma omp atomic | |
e += 1; | |
} | |
#pragma omp taskwait | |
return e; | |
} | |
int | |
main (void) | |
{ | |
int e = 0; | |
#pragma omp parallel num_threads(4) reduction(+:e) | |
{ | |
e += f1 (); | |
e += f2 (); | |
} | |
if (e) | |
abort (); | |
return 0; | |
} |