diff libgomp/testsuite/libgomp.c/pr29947-2.c @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgomp/testsuite/libgomp.c/pr29947-2.c	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,328 @@
+/* PR libgomp/29947 */
+
+/* { dg-do run } */
+
+extern void abort (void);
+
+int cnt;
+
+void
+test1 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static)
+    for (i = j1; i <= k1; ++i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test2 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static)
+    for (i = k1; i >= j1; --i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test3 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static, 1)
+    for (i = j1; i <= k1; ++i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test4 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static, 1)
+    for (i = k1; i >= j1; --i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test5 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static) ordered
+    for (i = j1; i <= k1; ++i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+#pragma omp ordered
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test6 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static) ordered
+    for (i = k1; i >= j1; --i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+#pragma omp ordered
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test7 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static, 1) ordered
+    for (i = j1; i <= k1; ++i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+#pragma omp ordered
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test8 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel reduction (+:e,c)
+  {
+#pragma omp for schedule (static, 1) ordered
+    for (i = k1; i >= j1; --i)
+      {
+	if (i < j2 || i > k2)
+	  ++e;
+#pragma omp ordered
+	++c;
+      }
+#pragma omp atomic
+    ++cnt;
+  }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test9 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static)
+  for (i = j1; i <= k1; ++i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test10 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static)
+  for (i = k1; i >= j1; --i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test11 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static, 1)
+  for (i = j1; i <= k1; ++i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test12 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static, 1)
+  for (i = k1; i >= j1; --i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test13 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static) ordered
+  for (i = j1; i <= k1; ++i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+#pragma omp ordered
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test14 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static) ordered
+  for (i = k1; i >= j1; --i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+#pragma omp ordered
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test15 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static, 1) ordered
+  for (i = j1; i <= k1; ++i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+#pragma omp ordered
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+void
+test16 (long j1, long k1, long j2, long k2)
+{
+  long i, e = 0, c = 0;
+#pragma omp parallel for reduction (+:e,c) schedule (static, 1) ordered
+  for (i = k1; i >= j1; --i)
+    {
+      if (i < j2 || i > k2)
+	++e;
+#pragma omp ordered
+      ++c;
+    }
+  if (e || (c != j2 > k2 ? 0 : k2 - j2 + 1))
+    abort ();
+}
+
+int
+__attribute__((noinline))
+test (long j1, long k1, long j2, long k2)
+{
+  test1 (j1, k1, j2, k2);
+  test2 (j1, k1, j2, k2);
+  test3 (j1, k1, j2, k2);
+  test4 (j1, k1, j2, k2);
+  test5 (j1, k1, j2, k2);
+  test6 (j1, k1, j2, k2);
+  test7 (j1, k1, j2, k2);
+  test8 (j1, k1, j2, k2);
+  test9 (j1, k1, j2, k2);
+  test10 (j1, k1, j2, k2);
+  test11 (j1, k1, j2, k2);
+  test12 (j1, k1, j2, k2);
+  test13 (j1, k1, j2, k2);
+  test14 (j1, k1, j2, k2);
+  test15 (j1, k1, j2, k2);
+  test16 (j1, k1, j2, k2);
+  return cnt;
+}
+
+int
+main (void)
+{
+  test (1, 5, 1, 5);
+  test (5, 5, 5, 5);
+  test (5, 4, 5, 4);
+  test (5, 1, 5, 1);
+  return 0;
+}