extern "C" void abort ();

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