/* { dg-additional-options "-Wno-deprecated-declarations" } */

#include <omp.h>
#include <stdlib.h>
#include <string.h>

int
main (void)
{
  int e[3];

  memset (e, '\0', sizeof (e));
  omp_set_nested (1);
  omp_set_dynamic (0);
  if (omp_in_parallel ()
      || omp_get_level () != 0
      || omp_get_ancestor_thread_num (0) != 0
      || omp_get_ancestor_thread_num (-1) != -1
      || omp_get_ancestor_thread_num (1) != -1
      || omp_get_team_size (0) != 1
      || omp_get_team_size (-1) != -1
      || omp_get_team_size (1) != -1
      || omp_get_active_level () != 0)
    abort ();
#pragma omp parallel num_threads (4)
  {
    int tn1 = omp_get_thread_num ();
    if (omp_in_parallel () != 1
	|| omp_get_num_threads () != 4
	|| tn1 >= 4 || tn1 < 0
	|| omp_get_level () != 1
	|| omp_get_ancestor_thread_num (0) != 0
	|| omp_get_ancestor_thread_num (1) != tn1
	|| omp_get_ancestor_thread_num (-1) != -1
	|| omp_get_ancestor_thread_num (2) != -1
	|| omp_get_team_size (0) != 1
	|| omp_get_team_size (1) != omp_get_num_threads ()
	|| omp_get_team_size (-1) != -1
	|| omp_get_team_size (2) != -1
	|| omp_get_active_level () != 1)
      #pragma omp atomic
	e[0] += 1;
    #pragma omp parallel if (0) num_threads(5) firstprivate(tn1)
    {
      int tn2 = omp_get_thread_num ();
      if (omp_in_parallel () != 1
	  || omp_get_num_threads () != 1
	  || tn2 != 0
	  || omp_get_level () != 2
	  || omp_get_ancestor_thread_num (0) != 0
	  || omp_get_ancestor_thread_num (1) != tn1
	  || omp_get_ancestor_thread_num (2) != tn2
	  || omp_get_ancestor_thread_num (-1) != -1
	  || omp_get_ancestor_thread_num (3) != -1
	  || omp_get_team_size (0) != 1
	  || omp_get_team_size (1) != 4
	  || omp_get_team_size (2) != 1
	  || omp_get_team_size (-1) != -1
	  || omp_get_team_size (3) != -1
	  || omp_get_active_level () != 1)
	#pragma omp atomic
	  e[1] += 1;
      #pragma omp parallel num_threads(2) firstprivate(tn1, tn2)
      {
	int tn3 = omp_get_thread_num ();
	if (omp_in_parallel () != 1
	    || omp_get_num_threads () != 2
	    || tn3 > 1 || tn3 < 0
	    || omp_get_level () != 3
	    || omp_get_ancestor_thread_num (0) != 0
	    || omp_get_ancestor_thread_num (1) != tn1
	    || omp_get_ancestor_thread_num (2) != tn2
	    || omp_get_ancestor_thread_num (3) != tn3
	    || omp_get_ancestor_thread_num (-1) != -1
	    || omp_get_ancestor_thread_num (4) != -1
	    || omp_get_team_size (0) != 1
	    || omp_get_team_size (1) != 4
	    || omp_get_team_size (2) != 1
	    || omp_get_team_size (3) != 2
	    || omp_get_team_size (-1) != -1
	    || omp_get_team_size (4) != -1
	    || omp_get_active_level () != 2)
	  #pragma omp atomic
	    e[2] += 1;
      }
    }
  }
  if (e[0] || e[1] || e[2])
    abort ();
  return 0;
}
