extern void abort (void);
extern int omp_get_num_threads (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 ();
}

int
main()
{
  parallel (1, 2);
  return 0;
}
