#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 ();
}

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