URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [libgomp/] [testsuite/] [libgomp.c++/] [task-2.C] - Rev 826
Compare with Previous | Blame | View Log
// { dg-do run }
#include <omp.h>
extern "C" void abort ();
int l = 5;
int
foo (int i)
{
int j = 7;
const int k = 8;
#pragma omp task firstprivate (i) shared (j, l)
{
#pragma omp critical
{
j += i;
l += k;
}
}
i++;
#pragma omp task firstprivate (i) shared (j, l)
{
#pragma omp critical
{
j += i;
l += k;
}
}
i++;
#pragma omp task firstprivate (i) shared (j, l)
{
#pragma omp critical
{
j += i;
l += k;
}
}
i++;
#pragma omp task firstprivate (i) shared (j, l)
{
#pragma omp critical
{
j += i;
l += k;
}
}
i++;
#pragma omp taskwait
return (i != 8 * omp_get_thread_num () + 4
|| j != 4 * i - 3
|| k != 8);
}
int
main (void)
{
int r = 0;
#pragma omp parallel num_threads (4) reduction(+:r)
if (omp_get_num_threads () != 4)
{
#pragma omp master
l = 133;
}
else if (foo (8 * omp_get_thread_num ()))
r++;
if (r || l != 133)
abort ();
return 0;
}