gcc/libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-nowait-1.c

40 lines
892 B
C

#ifdef __cplusplus
extern "C"
#endif
void abort (void);
int
main ()
{
int a[64], b = 1;
#pragma omp parallel num_threads (4)
#pragma omp single
{
int i;
#pragma omp taskwait depend(in: a) nowait
#pragma omp taskwait depend(in: a) nowait
#pragma omp taskwait
#pragma omp taskgroup
{
#pragma omp taskwait depend(in: a) nowait
#pragma omp taskwait depend(in: a) nowait
}
for (i = 0; i < 64; ++i)
#pragma omp task depend(in: a) shared(a)
a[i] = i;
#pragma omp taskwait depend(inout: a) nowait
for (i = 0; i < 64; ++i)
#pragma omp task depend(inoutset: a) shared(a)
if (a[i] != i)
abort ();
else
a[i] = 2 * i + 1;
#pragma omp taskwait nowait depend(out: a) depend(in: b)
#pragma omp taskwait depend(inout: b)
for (i = 0; i < 64; ++i)
if (a[i] != 2 * i + 1)
abort ();
}
return 0;
}