diff libgomp/testsuite/libgomp.c/critical-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/critical-2.c	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,35 @@
+// { dg-do run }
+// Test several constructs within a parallel.  At one point in development,
+// the critical directive clobbered the shared clause of the parallel.
+
+#include <omp.h>
+#include <stdlib.h>
+
+#define N       2000
+
+int main()
+{
+  int A[N];
+  int nthreads;
+  int i;
+
+#pragma omp parallel shared (A, nthreads)
+  {
+    #pragma omp master
+      nthreads = omp_get_num_threads ();
+
+    #pragma omp for
+      for (i = 0; i < N; i++)
+        A[i] = 0;
+
+    #pragma omp critical
+      for (i = 0; i < N; i++)
+        A[i] += 1;
+  }
+
+  for (i = 0; i < N; i++)
+    if (A[i] != nthreads)
+      abort ();
+
+  return 0;
+}