diff gcc/testsuite/c-c++-common/goacc/sb-1.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/goacc/sb-1.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,75 @@
+// { dg-skip-if "not yet" { c++ } }
+
+void foo()
+{
+  int l;
+
+  bad1:
+  #pragma acc parallel
+    goto bad1; // { dg-error "invalid branch to/from OpenACC structured block" }
+  #pragma acc kernels
+    goto bad1; // { dg-error "invalid branch to/from OpenACC structured block" }
+  #pragma acc data
+    goto bad1; // { dg-error "invalid branch to/from OpenACC structured block" }
+  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
+    for (l = 0; l < 2; ++l)
+      goto bad1; // { dg-error "invalid branch to/from OpenACC structured block" }
+
+  goto bad2_parallel; // { dg-error "invalid entry to OpenACC structured block" }
+  #pragma acc parallel
+    {
+      bad2_parallel: ;
+    }
+
+  goto bad2_kernels; // { dg-error "invalid entry to OpenACC structured block" }
+  #pragma acc kernels
+    {
+      bad2_kernels: ;
+    }
+
+  goto bad2_data; // { dg-error "invalid entry to OpenACC structured block" }
+  #pragma acc data
+    {
+      bad2_data: ;
+    }
+
+  goto bad2_loop; // { dg-error "invalid entry to OpenACC structured block" }
+  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
+  for (l = 0; l < 2; ++l)
+    {
+      bad2_loop: ;
+    }
+
+  #pragma acc parallel
+    {
+      int i;
+      goto ok1_parallel;
+      for (i = 0; i < 10; ++i)
+	{ ok1_parallel: break; }
+    }
+
+  #pragma acc kernels
+    {
+      int i;
+      goto ok1_kernels;
+      for (i = 0; i < 10; ++i)
+	{ ok1_kernels: break; }
+    }
+
+  #pragma acc data
+    {
+      int i;
+      goto ok1_data;
+      for (i = 0; i < 10; ++i)
+	{ ok1_data: break; }
+    }
+
+  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
+    for (l = 0; l < 2; ++l)
+      {
+	int i;
+	goto ok1_loop;
+	for (i = 0; i < 10; ++i)
+	  { ok1_loop: break; }
+      }
+}