URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.c++/] [shared-1.C] - Rev 735
Compare with Previous | Blame | View Log
#include <omp.h>
extern "C" void abort (void);
struct Y
{
int l[5][10];
};
struct X
{
struct Y y;
float b[10];
};
void
parallel (int a, int b)
{
int i, j;
struct X A[10][5];
a = b = 3;
for (i = 0; i < 10; i++)
for (j = 0; j < 5; j++)
A[i][j].y.l[3][3] = -10;
#pragma omp parallel shared (a, b, A) num_threads (5)
{
int i, j;
#pragma omp atomic
a += omp_get_num_threads ();
#pragma omp atomic
b += omp_get_num_threads ();
#pragma omp for private (j)
for (i = 0; i < 10; i++)
for (j = 0; j < 5; j++)
A[i][j].y.l[3][3] += 20;
}
for (i = 0; i < 10; i++)
for (j = 0; j < 5; j++)
if (A[i][j].y.l[3][3] != 10)
abort ();
if (a != 28)
abort ();
if (b != 28)
abort ();
}
main()
{
parallel (1, 2);
return 0;
}