/* { dg-do run } */
/* { dg-set-target-env-var OMP_THREAD_LIMIT "9" } */
/* { dg-additional-options "-Wno-deprecated-declarations" } */
// { dg-additional-options "-Wno-deprecated-openmp" }
#include <stdlib.h>
#include <unistd.h>
#include <omp.h>
#include "usleep.h"

int
main ()
{
  if (omp_get_thread_limit () != 9)
    return 0;
  omp_set_dynamic (0);
  #pragma omp parallel num_threads (8)
  if (omp_get_num_threads () != 8)
    abort ();
  #pragma omp parallel num_threads (16)
  if (omp_get_num_threads () > 9)
    abort ();
  #pragma omp target if (0)
  {
    omp_set_dynamic (0);
    omp_set_nested (1);
    #pragma omp teams thread_limit (6)
      {
	#pragma omp parallel num_threads (3)
	if (omp_get_thread_limit () > 6
	    || (omp_get_thread_limit () == 6 && omp_get_num_threads () != 3))
	  abort ();
	#pragma omp parallel num_threads (3)
	if (omp_get_thread_limit () > 6
	    || (omp_get_thread_limit () == 6 && omp_get_num_threads () != 3))
	  abort ();
	#pragma omp parallel num_threads (8)
	if (omp_get_thread_limit () > 6
	    || (omp_get_thread_limit () == 6 && omp_get_num_threads () > 6))
	  abort ();
	#pragma omp parallel num_threads (6)
	if (omp_get_thread_limit () > 6
	    || (omp_get_thread_limit () == 6 && omp_get_num_threads () != 6))
	  abort ();
	int cnt = 0;
	#pragma omp parallel num_threads (5)
	#pragma omp parallel num_threads (5)
	#pragma omp parallel num_threads (2)
	{
	  int v;
	  #pragma omp atomic capture
	  v = ++cnt;
	  if (v > 6)
	    abort ();
	  tgt_usleep (10000);
	  #pragma omp atomic
	  --cnt;
	}
      }
  }
  return 0;
}
