diff gcc/testsuite/c-c++-common/gomp/simd-setjmp-1.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/simd-setjmp-1.c	Thu Feb 13 11:34:05 2020 +0900
@@ -0,0 +1,68 @@
+typedef long int jmp_buf[8];
+extern
+#ifdef __cplusplus
+"C"
+#endif
+int setjmp (jmp_buf);
+
+void
+foo (void)
+{
+  int i;
+  #pragma omp simd
+  for (i = 0; i < 64; i++)
+    {
+      jmp_buf buf;
+      setjmp (buf);	/* { dg-error "setjmp/longjmp inside 'simd' construct" } */
+    }
+}
+
+void
+bar (void)
+{
+  int i;
+  #pragma omp loop bind(thread)
+  for (i = 0; i < 64; i++)
+    {
+      jmp_buf buf;
+      setjmp (buf);
+    }
+}
+
+#ifdef __cplusplus
+struct S
+{
+  static int setjmp (jmp_buf);
+};
+
+namespace N
+{
+  int setjmp (jmp_buf);
+}
+
+void
+baz (void)
+{
+  int i;
+  #pragma omp simd
+  for (i = 0; i < 64; i++)
+    {
+      jmp_buf buf;
+      S::setjmp (buf);
+      N::setjmp (buf);
+    }
+}
+
+void
+qux (void)
+{
+  int i;
+  #pragma omp loop bind(thread)
+  for (i = 0; i < 64; i++)
+    {
+      jmp_buf buf;
+      S::setjmp (buf);
+      N::setjmp (buf);
+    }
+}
+#endif