view gcc/testsuite/c-c++-common/gomp/cancel-1.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* { dg-do compile } */
/* { dg-options "-fopenmp" } */

void
f1 (void)
{
  #pragma omp cancel parallel			/* { dg-error "orphaned" } */
  #pragma omp cancel for			/* { dg-error "orphaned" } */
  #pragma omp cancel sections			/* { dg-error "orphaned" } */
  #pragma omp cancel taskgroup			/* { dg-error "orphaned" } */
  #pragma omp cancellation point parallel	/* { dg-error "orphaned" } */
  #pragma omp cancellation point for		/* { dg-error "orphaned" } */
  #pragma omp cancellation point sections	/* { dg-error "orphaned" } */
  #pragma omp cancellation point taskgroup	/* { dg-error "orphaned" } */
}

void
f2 (void)
{
  int i, j = 0;
  #pragma omp parallel
  {
    #pragma omp cancel parallel
    #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point parallel
    #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    #pragma omp master
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp single
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp critical
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp taskgroup
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp task
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
    }
    #pragma omp taskgroup
    #pragma omp task
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup
    }
    #pragma omp taskloop
    for (i = 0; i < 10; i++)
      {
        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
        #pragma omp cancel taskgroup
        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
        #pragma omp cancellation point taskgroup
	#pragma omp task
	{
	  #pragma omp cancellation point taskgroup
	  #pragma omp cancel taskgroup
	}
      }
    #pragma omp taskloop nogroup
    for (i = 0; i < 10; i++)
      {
        #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
        #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
        #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
        #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
        #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
        #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
        #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
        #pragma omp cancellation point taskgroup/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	#pragma omp task
	{
	  #pragma omp cancellation point taskgroup/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	}
      }
    #pragma omp taskgroup
    {
      #pragma omp task
      {
	#pragma omp task
	{
	  #pragma omp cancellation point taskgroup
	  #pragma omp cancel taskgroup
	}
      }
      #pragma omp taskloop nogroup
      for (i = 0; i < 10; i++)
	{
	  #pragma omp task
	  {
	    #pragma omp cancellation point taskgroup
	    #pragma omp cancel taskgroup
	  }
	  #pragma omp cancellation point taskgroup
	  #pragma omp cancel taskgroup
	}
    }
    #pragma omp taskgroup
    {
      #pragma omp parallel
      {
	#pragma omp task
	{
	  #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	}
	#pragma omp taskloop
	for (i = 0; i < 10; i++)
	  {
	    #pragma omp cancel taskgroup
	    #pragma omp cancellation point taskgroup
	  }
	#pragma omp taskloop nogroup
	for (i = 0; i < 10; i++)
	  {
	    #pragma omp cancel taskgroup	     /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  }
      }
      #pragma omp target
      {
	#pragma omp task
	{
	  #pragma omp cancel taskgroup		/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	}
      }
      #pragma omp target
      #pragma omp teams
      #pragma omp distribute
      for (i = 0; i < 10; i++)
	{
	  #pragma omp task
	  {
	    #pragma omp cancel taskgroup	/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  }
	}
      #pragma omp target data map(i)
      {
	#pragma omp task
	{
	  #pragma omp cancel taskgroup
	  #pragma omp cancellation point taskgroup
	}
      }
    }
    #pragma omp taskloop
    for (i = 0; i < 10; i++)
      {
	#pragma omp parallel
	{
	  #pragma omp task
	  {
	    #pragma omp cancel taskgroup	     /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  }
	}
        #pragma omp target
	{
	  #pragma omp task
	  {
	    #pragma omp cancel taskgroup	     /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	    #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	  }
	}
	#pragma omp target
	#pragma omp teams
	#pragma omp distribute
	for (j = 0; j < 10; j++)
	  {
	    #pragma omp task
	    {
	      #pragma omp cancel taskgroup	/* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	      #pragma omp cancellation point taskgroup /* { dg-error "construct not closely nested inside of .taskgroup. region" } */
	    }
	  }
	#pragma omp target data map(i)
	{
	  #pragma omp task
	  {
	    #pragma omp cancel taskgroup
	    #pragma omp cancellation point taskgroup
	  }
	}
      }
    #pragma omp for
    for (i = 0; i < 10; i++)
      {
	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel for
	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point for
	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
      }
    #pragma omp for ordered
    for (i = 0; i < 10; i++)
      #pragma omp ordered
      {
	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
      }
    #pragma omp sections
    {
      {
	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
	#pragma omp cancel sections
	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point sections
	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
      }
      #pragma omp section
      {
	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
	#pragma omp cancel sections
	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point sections
	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
      }
    }
    #pragma omp target data map(j)
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp target
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  }
  #pragma omp target data map(j)
  {
    #pragma omp cancel parallel			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
  }
  #pragma omp target
  {
    #pragma omp cancel parallel			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
  }
  #pragma omp target teams
  {
    #pragma omp cancel parallel			/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancel for			/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancel sections			/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancel taskgroup		/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancellation point parallel	/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancellation point for		/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancellation point sections	/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
    #pragma omp cancellation point taskgroup	/* { dg-error "only .distribute., .parallel. or .loop. regions are allowed to be strictly nested" } */
  }
  #pragma omp target teams distribute
  for (i = 0; i < 10; i++)
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  #pragma omp for
  for (i = 0; i < 10; i++)
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  #pragma omp for
  for (i = 0; i < 10; i++)
    #pragma omp target data map(j)
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  #pragma omp for
  for (i = 0; i < 10; i++)
    #pragma omp target
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  #pragma omp for ordered
  for (i = 0; i < 10; i++)
    #pragma omp ordered
      #pragma omp target data map(j)
      {
	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
      }
  #pragma omp for ordered
  for (i = 0; i < 10; i++)
    #pragma omp ordered
      #pragma omp target
      {
	#pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel for			/* { dg-error "not closely nested inside" } */
	#pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
	#pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
	#pragma omp cancellation point taskgroup/* { dg-error "not closely nested inside" } */
      }
  #pragma omp sections
  {
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp section
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  }
  #pragma omp sections
  {
    #pragma omp target data map(j)
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp section
    #pragma omp target data map(j)
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  }
  #pragma omp sections
  {
    #pragma omp target
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
    #pragma omp section
    #pragma omp target
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  }
  #pragma omp task
  {
    #pragma omp cancel parallel			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel sections			/* { dg-error "not closely nested inside" } */
    #pragma omp cancel taskgroup
    #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point for		/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
    #pragma omp cancellation point taskgroup
    #pragma omp taskgroup
    {
      #pragma omp cancel parallel		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel for			/* { dg-error "not closely nested inside" } */
      #pragma omp cancel sections		/* { dg-error "not closely nested inside" } */
      #pragma omp cancel taskgroup		/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point parallel	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point for	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point sections	/* { dg-error "not closely nested inside" } */
      #pragma omp cancellation point taskgroup	/* { dg-error "not closely nested inside" } */
    }
  }
}

void
f3 (void)
{
  int i;
  #pragma omp for nowait
  for (i = 0; i < 10; i++)
    {
      #pragma omp cancel for		/* { dg-warning "nowait" } */
    }
  #pragma omp sections nowait
  {
    {
      #pragma omp cancel sections	/* { dg-warning "nowait" } */
    }
    #pragma omp section
    {
      #pragma omp cancel sections	/* { dg-warning "nowait" } */
    }
  }
  #pragma omp for ordered
  for (i = 0; i < 10; i++)
    {
      #pragma omp cancel for		/* { dg-warning "ordered" } */
      #pragma omp ordered
      {
      }
    }
}

#pragma omp cancellation point /* { dg-error "expected declaration specifiers before end of line" } */

void
f4 (void)
{
  if (0)
#pragma omp cancellation EKAHI /* { dg-error "expected .point. before .EKAHI." } */
    ;
#pragma omp cancellation HO OKAHI /* { dg-error "expected .point. before .HO." } */
  if (0)
#pragma omp cancellation point /* { dg-error ".pragma omp cancellation point. may only be used in compound statements" } */
    ;
#pragma omp cancellation point /* { dg-error ".pragma omp cancellation point. must specify one of" } */
}