(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
cancel-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-fopenmp" } */
       3  
       4  void
       5  f1 (void)
       6  {
       7    #pragma omp cancel parallel			/* { dg-error "orphaned" } */
       8    #pragma omp cancel for			/* { dg-error "orphaned" } */
       9    #pragma omp cancel sections			/* { dg-error "orphaned" } */
      10    #pragma omp cancel taskgroup			/* { dg-error "orphaned" } */
      11    #pragma omp cancellation point parallel	/* { dg-error "orphaned" } */
      12    #pragma omp cancellation point for		/* { dg-error "orphaned" } */
      13    #pragma omp cancellation point sections	/* { dg-error "orphaned" } */
      14    #pragma omp cancellation point taskgroup	/* { dg-error "orphaned" } */
      15  }
      16  
      17  void
      18  f2 (void)
      19  {
      20    int i, j = 0;
      21    #pragma omp parallel
      22    {
      23      #pragma omp cancel parallel
      24      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      25      #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
      26      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      27      #pragma omp cancellation point parallel
      28      #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
      29      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      30      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      31      #pragma omp master
      32      {
      33        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      34        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      35        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      36        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      37        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      38        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      39        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      40        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      41      }
      42      #pragma omp masked
      43      {
      44        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      45        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      46        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      47        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      48        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      49        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      50        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      51        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      52      }
      53      #pragma omp scope
      54      {
      55        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      56        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      57        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      58        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      59        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      60        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      61        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      62        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      63      }
      64      #pragma omp single
      65      {
      66        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      67        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      68        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      69        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      70        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      71        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      72        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      73        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      74      }
      75      #pragma omp critical
      76      {
      77        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      78        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      79        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      80        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      81        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      82        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      83        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      84        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      85      }
      86      #pragma omp taskgroup
      87      {
      88        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      89        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      90        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      91        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      92        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      93        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      94        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      95        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
      96      }
      97      #pragma omp task
      98      {
      99        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     100        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     101        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     102        #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     103        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     104        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     105        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     106        #pragma omp cancellation point taskgroup	/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     107      }
     108      #pragma omp taskgroup
     109      #pragma omp task
     110      {
     111        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     112        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     113        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     114        #pragma omp cancel taskgroup
     115        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     116        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     117        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     118        #pragma omp cancellation point taskgroup
     119      }
     120      #pragma omp taskloop
     121      for (i = 0; i < 10; i++)
     122        {
     123          #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     124          #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     125          #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     126          #pragma omp cancel taskgroup
     127          #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     128          #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     129          #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     130          #pragma omp cancellation point taskgroup
     131  	#pragma omp task
     132  	{
     133  	  #pragma omp cancellation point taskgroup
     134  	  #pragma omp cancel taskgroup
     135  	}
     136        }
     137      #pragma omp taskloop nogroup
     138      for (i = 0; i < 10; i++)
     139        {
     140          #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     141          #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     142          #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     143          #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     144          #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     145          #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     146          #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     147          #pragma omp cancellation point taskgroup/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     148  	#pragma omp task
     149  	{
     150  	  #pragma omp cancellation point taskgroup/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     151  	  #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     152  	}
     153        }
     154      #pragma omp taskgroup
     155      {
     156        #pragma omp task
     157        {
     158  	#pragma omp task
     159  	{
     160  	  #pragma omp cancellation point taskgroup
     161  	  #pragma omp cancel taskgroup
     162  	}
     163        }
     164        #pragma omp taskloop nogroup
     165        for (i = 0; i < 10; i++)
     166  	{
     167  	  #pragma omp task
     168  	  {
     169  	    #pragma omp cancellation point taskgroup
     170  	    #pragma omp cancel taskgroup
     171  	  }
     172  	  #pragma omp cancellation point taskgroup
     173  	  #pragma omp cancel taskgroup
     174  	}
     175      }
     176      #pragma omp taskgroup
     177      {
     178        #pragma omp parallel
     179        {
     180  	#pragma omp task
     181  	{
     182  	  #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     183  	  #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     184  	}
     185  	#pragma omp taskloop
     186  	for (i = 0; i < 10; i++)
     187  	  {
     188  	    #pragma omp cancel taskgroup
     189  	    #pragma omp cancellation point taskgroup
     190  	  }
     191  	#pragma omp taskloop nogroup
     192  	for (i = 0; i < 10; i++)
     193  	  {
     194  	    #pragma omp cancel taskgroup	     /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     195  	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     196  	  }
     197        }
     198        #pragma omp target
     199        {
     200  	#pragma omp task
     201  	{
     202  	  #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     203  	  #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     204  	}
     205        }
     206        #pragma omp target
     207        #pragma omp teams
     208        #pragma omp distribute
     209        for (i = 0; i < 10; i++)
     210  	{
     211  	  #pragma omp task
     212  	  {
     213  	    #pragma omp cancel taskgroup	/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     214  	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     215  	  }
     216  	}
     217        #pragma omp target data map(i)
     218        {
     219  	#pragma omp task
     220  	{
     221  	  #pragma omp cancel taskgroup
     222  	  #pragma omp cancellation point taskgroup
     223  	}
     224        }
     225      }
     226      #pragma omp taskloop
     227      for (i = 0; i < 10; i++)
     228        {
     229  	#pragma omp parallel
     230  	{
     231  	  #pragma omp task
     232  	  {
     233  	    #pragma omp cancel taskgroup	     /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     234  	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     235  	  }
     236  	}
     237          #pragma omp target
     238  	{
     239  	  #pragma omp task
     240  	  {
     241  	    #pragma omp cancel taskgroup	     /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     242  	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     243  	  }
     244  	}
     245  	#pragma omp target
     246  	#pragma omp teams
     247  	#pragma omp distribute
     248  	for (j = 0; j < 10; j++)
     249  	  {
     250  	    #pragma omp task
     251  	    {
     252  	      #pragma omp cancel taskgroup	/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     253  	      #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
     254  	    }
     255  	  }
     256  	#pragma omp target data map(i)
     257  	{
     258  	  #pragma omp task
     259  	  {
     260  	    #pragma omp cancel taskgroup
     261  	    #pragma omp cancellation point taskgroup
     262  	  }
     263  	}
     264        }
     265      #pragma omp for
     266      for (i = 0; i < 10; i++)
     267        {
     268  	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     269  	#pragma omp cancel for
     270  	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     271  	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     272  	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     273  	#pragma omp cancellation point for
     274  	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     275  	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
     276        }
     277      #pragma omp for ordered
     278      for (i = 0; i < 10; i++)
     279        #pragma omp ordered
     280        {
     281  	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     282  	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     283  	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     284  	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     285  	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     286  	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     287  	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     288  	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
     289        }
     290      #pragma omp sections
     291      {
     292        {
     293  	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     294  	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     295  	#pragma omp cancel sections
     296  	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     297  	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     298  	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     299  	#pragma omp cancellation point sections
     300  	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
     301        }
     302        #pragma omp section
     303        {
     304  	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     305  	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     306  	#pragma omp cancel sections
     307  	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     308  	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     309  	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     310  	#pragma omp cancellation point sections
     311  	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
     312        }
     313      }
     314      #pragma omp target data map(j)
     315      {
     316        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     317        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     318        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     319        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     320        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     321        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     322        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     323        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     324      }
     325      #pragma omp target
     326      {
     327        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     328        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     329        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     330        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     331        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     332        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     333        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     334        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     335      }
     336    }
     337    #pragma omp target data map(j)
     338    {
     339      #pragma omp cancel parallel			/* { dg-error "not closely nested inside" } */
     340      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     341      #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
     342      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     343      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     344      #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
     345      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     346      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     347    }
     348    #pragma omp target
     349    {
     350      #pragma omp cancel parallel			/* { dg-error "not closely nested inside" } */
     351      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     352      #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
     353      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     354      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     355      #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
     356      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     357      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     358    }
     359    #pragma omp target teams
     360    {
     361      #pragma omp cancel parallel			/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     362      #pragma omp cancel for			/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     363      #pragma omp cancel sections			/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     364      #pragma omp cancel taskgroup		/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     365      #pragma omp cancellation point parallel	/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     366      #pragma omp cancellation point for		/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     367      #pragma omp cancellation point sections	/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     368      #pragma omp cancellation point taskgroup	/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
     369    }
     370    #pragma omp target teams distribute
     371    for (i = 0; i < 10; i++)
     372      {
     373        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     374        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     375        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     376        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     377        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     378        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     379        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     380        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     381      }
     382    #pragma omp for
     383    for (i = 0; i < 10; i++)
     384      {
     385        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     386        #pragma omp cancel for
     387        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     388        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     389        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     390        #pragma omp cancellation point for
     391        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     392        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     393      }
     394    #pragma omp for
     395    for (i = 0; i < 10; i++)
     396      #pragma omp target data map(j)
     397      {
     398        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     399        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     400        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     401        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     402        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     403        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     404        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     405        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     406      }
     407    #pragma omp for
     408    for (i = 0; i < 10; i++)
     409      #pragma omp target
     410      {
     411        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     412        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     413        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     414        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     415        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     416        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     417        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     418        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     419      }
     420    #pragma omp for ordered
     421    for (i = 0; i < 10; i++)
     422      #pragma omp ordered
     423        #pragma omp target data map(j)
     424        {
     425  	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     426  	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     427  	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     428  	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     429  	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     430  	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     431  	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     432  	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
     433        }
     434    #pragma omp for ordered
     435    for (i = 0; i < 10; i++)
     436      #pragma omp ordered
     437        #pragma omp target
     438        {
     439  	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     440  	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     441  	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     442  	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     443  	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     444  	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     445  	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     446  	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
     447        }
     448    #pragma omp sections
     449    {
     450      {
     451        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     452        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     453        #pragma omp cancel sections
     454        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     455        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     456        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     457        #pragma omp cancellation point sections
     458        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     459      }
     460      #pragma omp section
     461      {
     462        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     463        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     464        #pragma omp cancel sections
     465        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     466        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     467        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     468        #pragma omp cancellation point sections
     469        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     470      }
     471    }
     472    #pragma omp sections
     473    {
     474      #pragma omp target data map(j)
     475      {
     476        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     477        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     478        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     479        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     480        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     481        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     482        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     483        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     484      }
     485      #pragma omp section
     486      #pragma omp target data map(j)
     487      {
     488        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     489        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     490        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     491        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     492        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     493        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     494        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     495        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     496      }
     497    }
     498    #pragma omp sections
     499    {
     500      #pragma omp target
     501      {
     502        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     503        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     504        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     505        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     506        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     507        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     508        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     509        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     510      }
     511      #pragma omp section
     512      #pragma omp target
     513      {
     514        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     515        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     516        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     517        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     518        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     519        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     520        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     521        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     522      }
     523    }
     524    #pragma omp task
     525    {
     526      #pragma omp cancel parallel			/* { dg-error "not closely nested inside" } */
     527      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     528      #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
     529      #pragma omp cancel taskgroup
     530      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     531      #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
     532      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     533      #pragma omp cancellation point taskgroup
     534      #pragma omp taskgroup
     535      {
     536        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
     537        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
     538        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
     539        #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
     540        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
     541        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
     542        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
     543        #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
     544      }
     545    }
     546  }
     547  
     548  void
     549  f3 (void)
     550  {
     551    int i;
     552    #pragma omp for nowait
     553    for (i = 0; i < 10; i++)
     554      {
     555        #pragma omp cancel for		/* { dg-warning "nowait" } */
     556      }
     557    #pragma omp sections nowait
     558    {
     559      {
     560        #pragma omp cancel sections	/* { dg-warning "nowait" } */
     561      }
     562      #pragma omp section
     563      {
     564        #pragma omp cancel sections	/* { dg-warning "nowait" } */
     565      }
     566    }
     567    #pragma omp for ordered
     568    for (i = 0; i < 10; i++)
     569      {
     570        #pragma omp cancel for		/* { dg-warning "ordered" } */
     571        #pragma omp ordered
     572        {
     573        }
     574      }
     575  }
     576  
     577  #pragma omp cancellation point /* { dg-error "expected declaration specifiers before end of line" } */
     578  
     579  void
     580  f4 (void)
     581  {
     582    if (0)
     583  #pragma omp cancellation EKAHI /* { dg-error "expected .point. before .EKAHI." } */
     584      ;
     585  #pragma omp cancellation HO OKAHI /* { dg-error "expected .point. before .HO." } */
     586    if (0)
     587  #pragma omp cancellation point /* { dg-error ".pragma omp cancellation point. may only be used in compound statements" } */
     588      ;
     589  #pragma omp cancellation point /* { dg-error ".pragma omp cancellation point. must specify one of" } */
     590  }