(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
task-in-explicit-1.c
       1  /* { dg-do run } */
       2  
       3  #include <omp.h>
       4  #include <stdlib.h>
       5  
       6  int
       7  main ()
       8  {
       9    if (omp_in_explicit_task ())
      10      abort ();
      11    #pragma omp task
      12    if (!omp_in_explicit_task ())
      13      abort ();
      14    #pragma omp task final (1)
      15    {
      16      if (!omp_in_explicit_task ())
      17        abort ();
      18      #pragma omp task 
      19      if (!omp_in_explicit_task ())
      20        abort ();
      21    }
      22    #pragma omp parallel
      23    {
      24      if (omp_in_explicit_task ())
      25        abort ();
      26      #pragma omp task if (0)
      27        {
      28  	if (!omp_in_explicit_task ())
      29  	  abort ();
      30  	#pragma omp task if (0)
      31  	  if (!omp_in_explicit_task ())
      32  	    abort ();
      33        }
      34      #pragma omp task final (1)
      35        if (!omp_in_explicit_task ())
      36  	abort ();
      37      #pragma omp barrier
      38      if (omp_in_explicit_task ())
      39        abort ();
      40      #pragma omp taskloop num_tasks (24)
      41      for (int i = 0; i < 32; ++i)
      42        if (!omp_in_explicit_task ())
      43  	abort ();
      44      #pragma omp masked
      45      #pragma omp task
      46      if (!omp_in_explicit_task ())
      47        abort ();
      48      #pragma omp barrier
      49      if (omp_in_explicit_task ())
      50        abort ();
      51    }
      52    #pragma omp target
      53    {
      54      if (omp_in_explicit_task ())
      55        abort ();
      56      #pragma omp task if (0)
      57      if (!omp_in_explicit_task ())
      58        abort ();
      59      #pragma omp task
      60      if (!omp_in_explicit_task ())
      61        abort ();
      62    }
      63    #pragma omp target teams
      64    {
      65      #pragma omp distribute
      66      for (int i = 0; i < 4; ++i)
      67        if (omp_in_explicit_task ())
      68  	abort ();
      69        else
      70  	{
      71  	  #pragma omp parallel
      72  	  {
      73  	    if (omp_in_explicit_task ())
      74  	      abort ();
      75  	    #pragma omp task
      76  	    if (!omp_in_explicit_task ())
      77  	      abort ();
      78  	    #pragma omp barrier
      79  	    if (omp_in_explicit_task ())
      80  	      abort ();
      81  	  }
      82  	}
      83    }
      84    #pragma omp teams
      85    {
      86      #pragma omp distribute
      87      for (int i = 0; i < 4; ++i)
      88        if (omp_in_explicit_task ())
      89  	abort ();
      90        else
      91  	{
      92  	  #pragma omp parallel
      93  	  {
      94  	    if (omp_in_explicit_task ())
      95  	      abort ();
      96  	    #pragma omp task
      97  	    if (!omp_in_explicit_task ())
      98  	      abort ();
      99  	    #pragma omp barrier
     100  	    if (omp_in_explicit_task ())
     101  	      abort ();
     102  	  }
     103  	}
     104    }
     105    return 0;
     106  }