/* { dg-do run } */
// { dg-additional-options "-Wno-deprecated-openmp" }
#include <omp.h>
extern void abort ();

int l = 5;

int
foo (int i)
{
  int j = 7;
  const int k = 8;
  #pragma omp task firstprivate (i) shared (j, l)
  {
    #pragma omp critical
      {
	j += i;
	l += k;
      }
  }
  i++;
  #pragma omp task firstprivate (i) shared (j, l)
  {
    #pragma omp critical
      {
	j += i;
	l += k;
      }
  }
  i++;
  #pragma omp task firstprivate (i) shared (j, l)
  {
    #pragma omp critical
      {
	j += i;
	l += k;
      }
  }
  i++;
  #pragma omp task firstprivate (i) shared (j, l)
  {
    #pragma omp critical
      {
	j += i;
	l += k;
      }
  }
  i++;
  #pragma omp taskwait
  return (i != 8 * omp_get_thread_num () + 4
	  || j != 4 * i - 3
	  || k != 8);
}

int
main (void)
{
  int r = 0;
  #pragma omp parallel num_threads (4) reduction(+:r)
    if (omp_get_num_threads () != 4)
      {
	#pragma omp master
	  l = 133;
      }
    else if (foo (8 * omp_get_thread_num ()))
      r++;
  if (r || l != 133)
    abort ();
  return 0;
}
