diff gcc/testsuite/c-c++-common/gomp/nesting-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/c-c++-common/gomp/nesting-2.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,154 @@
+void
+foo (void)
+{
+  int i;
+  #pragma omp taskloop
+  for (i = 0; i < 64; i++)
+    {
+      int j;
+      #pragma omp for			/* { dg-error "region may not be closely nested inside of" } */
+      for (j = 0; j < 10; j++)
+	;
+      #pragma omp single		/* { dg-error "region may not be closely nested inside of" } */
+      ;
+      #pragma omp sections		/* { dg-error "region may not be closely nested inside of" } */
+      {
+	#pragma omp section
+	;
+      }
+      #pragma omp barrier		/* { dg-error "region may not be closely nested inside of" } */
+      #pragma omp master		/* { dg-error "region may not be closely nested inside of" } */
+      ;
+      #pragma omp ordered		/* { dg-error "region may not be closely nested inside of" } */
+      ;
+      #pragma omp ordered threads	/* { dg-error "region may not be closely nested inside of" } */
+      ;
+      #pragma omp ordered simd threads	/* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
+      ;
+      #pragma omp simd
+      for (j = 0; j < 10; j++)
+	#pragma omp ordered simd
+	  ;
+      #pragma omp critical
+      {
+	#pragma omp simd
+	for (j = 0; j < 10; j++)
+	  #pragma omp ordered simd
+	    ;
+      }
+    }
+  #pragma omp taskloop
+  for (i = 0; i < 64; i++)
+    #pragma omp parallel
+    {
+      int j;
+      #pragma omp for
+      for (j = 0; j < 10; j++)
+	;
+      #pragma omp single
+      ;
+      #pragma omp sections
+      {
+	#pragma omp section
+	;
+      }
+      #pragma omp barrier
+      #pragma omp master
+      ;
+      #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
+      ;
+      #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
+      ;
+      #pragma omp simd
+      for (j = 0; j < 10; j++)
+	#pragma omp ordered simd
+	  ;
+      #pragma omp critical
+      {
+	#pragma omp simd
+	for (j = 0; j < 10; j++)
+	  #pragma omp ordered simd
+	    ;
+      }
+    }
+  #pragma omp taskloop
+  for (i = 0; i < 64; i++)
+    #pragma omp target
+    {
+      int j;
+      #pragma omp for
+      for (j = 0; j < 10; j++)
+	;
+      #pragma omp single
+      ;
+      #pragma omp sections
+      {
+	#pragma omp section
+	;
+      }
+      #pragma omp barrier
+      #pragma omp master
+      ;
+      #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
+      ;
+      #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
+      ;
+      #pragma omp simd
+      for (j = 0; j < 10; j++)
+	#pragma omp ordered simd
+	  ;
+      #pragma omp critical
+      {
+	#pragma omp simd
+	for (j = 0; j < 10; j++)
+	  #pragma omp ordered simd
+	    ;
+      }
+    }
+  #pragma omp ordered
+  {
+    #pragma omp ordered			/* { dg-error "region may not be closely nested inside of" } */
+    ;
+  }
+  #pragma omp ordered threads
+  {
+    #pragma omp ordered			/* { dg-error "region may not be closely nested inside of" } */
+    ;
+  }
+  #pragma omp ordered
+  {
+    #pragma omp ordered threads		/* { dg-error "region may not be closely nested inside of" } */
+    ;
+  }
+  #pragma omp ordered threads
+  {
+    #pragma omp ordered threads		/* { dg-error "region may not be closely nested inside of" } */
+    ;
+  }
+  #pragma omp critical
+  {
+    #pragma omp ordered simd		/* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
+    ;
+  }
+  #pragma omp for ordered
+  for (i = 0; i < 64; i++)
+    #pragma omp parallel
+    {
+      #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
+      ;
+    }
+  #pragma omp for ordered
+  for (i = 0; i < 64; i++)
+    #pragma omp parallel
+    {
+      #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
+      ;
+    }
+  #pragma omp for ordered(1)
+  for (i = 0; i < 64; i++)
+    #pragma omp parallel
+    {
+      #pragma omp ordered depend(source)	/* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
+      #pragma omp ordered depend(sink: i - 1)	/* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
+    }
+}