extern void abort (void);

int a = 18;

void
f1 (int i, int j, int k)
{
  int l = 6, m = 7, n = 8;
#pragma omp task private(j, m) shared(k, n)
  {
    j = 6;
    m = 5;
    if (++a != 19 || ++i != 9 || j != 6 || ++l != 7 || m != 5 || ++n != 9)
      #pragma omp atomic
	k++;
  }
#pragma omp taskwait
  if (a != 19 || i != 8 || j != 26 || k != 0 || l != 6 || m != 7 || n != 9)
    abort ();
}

int v1 = 1, v2 = 2, v5 = 5;
int e;

void
f2 (void)
{
  int v3 = 3;
#pragma omp sections private (v1) firstprivate (v2)
  {
  #pragma omp section
    {
      int v4 = 4;
      v1 = 7;
      #pragma omp task
	{
	  if (++v1 != 8 || ++v2 != 3 || ++v3 != 4 || ++v4 != 5 || ++v5 != 6)
	    e = 1;
	}
      #pragma omp taskwait
      if (v1 != 7 || v2 != 2 || v3 != 3 || v4 != 4 || v5 != 6)
	abort ();
      if (e)
	abort ();
    }
  }
}

void
f3 (int i, int j, int k)
{
  int l = 6, m = 7, n = 8;
#pragma omp task private(j, m) shared(k, n) untied
  {
    j = 6;
    m = 5;
    if (++a != 19 || ++i != 9 || j != 6 || ++l != 7 || m != 5 || ++n != 9)
      #pragma omp atomic
	k++;
  }
#pragma omp taskwait
  if (a != 19 || i != 8 || j != 26 || k != 0 || l != 6 || m != 7 || n != 9)
    abort ();
}

int
main (void)
{
  f1 (8, 26, 0);
  f2 ();
  a = 18;
  f3 (8, 26, 0);
  a = 18;
#pragma omp parallel num_threads(4)
  {
    #pragma omp master
      {
	f1 (8, 26, 0);
	a = 18;
	f3 (8, 26, 0);
      }
  }
  return 0;
}
