// { dg-additional-options "-Wno-deprecated-openmp" }

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