diff gcc/testsuite/c-c++-common/gomp/loop-3.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +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/loop-3.c	Thu Feb 13 11:34:05 2020 +0900
@@ -0,0 +1,145 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+int omp_get_thread_num (void);
+#ifdef __cplusplus
+}
+#endif
+
+void
+f1 (int *a)
+{
+  int i;
+  #pragma omp loop		/* { dg-error "'bind' clause not specified on a 'loop' construct not nested inside another OpenMP construct" } */
+  for (i = 0; i < 64; i++)
+    a[i] = i;
+}
+
+void
+f2 (int *a)
+{
+  int i, j;
+  #pragma omp parallel num_threads (4)
+  {
+    int j = omp_get_thread_num ();
+    #pragma omp loop private (i) bind(teams)	/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[j * 64 + i] = i;
+  }
+  #pragma omp critical
+  {
+    #pragma omp loop lastprivate (i) bind(teams)/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+  #pragma omp master
+  {
+    #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+  #pragma omp sections
+  {
+    #pragma omp loop bind(teams) lastprivate(i)	/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+  #pragma omp single
+  {
+    #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+  #pragma omp task
+  {
+    #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+  #pragma omp taskgroup
+  {
+    #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+  #pragma omp teams
+  {
+    #pragma omp distribute
+    for (j = 0; j < 64; ++j)
+      {
+	#pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+	for (i = 0; i < 64; i++)
+	  a[64 * j + i] = i;
+      }
+  }
+  #pragma omp for
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp parallel
+  #pragma omp loop
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp loop bind(thread)
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp loop bind(parallel)
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp for ordered
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp ordered threads
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp simd
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp taskloop
+  for (j = 0; j < 64; ++j)
+    {
+      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+  #pragma omp target
+  {
+    #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
+    for (i = 0; i < 64; i++)
+      a[i] = i;
+  }
+}
+
+void
+f3 (int *a)
+{
+  int i, j;
+  #pragma omp simd
+  for (j = 0; j < 64; j++)
+    {
+      #pragma omp loop bind(parallel)		/* { dg-error "'bind\\(parallel\\)' on a 'loop' construct nested inside 'simd' construct" } */
+      for (i = 0; i < 64; i++)
+	a[64 * j + i] = i;
+    }
+}