]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libgomp/testsuite/libgomp.c/reduction-5.c
Imported gcc-4.4.3
[msp430-gcc.git] / libgomp / testsuite / libgomp.c / reduction-5.c
diff --git a/libgomp/testsuite/libgomp.c/reduction-5.c b/libgomp/testsuite/libgomp.c/reduction-5.c
new file mode 100644 (file)
index 0000000..de87d9f
--- /dev/null
@@ -0,0 +1,78 @@
+/* PR middle-end/36506 */
+
+extern void abort (void);
+
+int
+main (void)
+{
+  int sum = 0, prod = 1;
+#pragma omp parallel
+  #pragma omp sections reduction (+:sum)
+    {
+    #pragma omp section
+      sum += 2;
+    #pragma omp section
+      sum += 2;
+    #pragma omp section
+      sum += 2;
+    }
+  if (sum != 6)
+    abort ();
+  sum = 0;
+#pragma omp parallel sections reduction (+:sum)
+  {
+  #pragma omp section
+    sum += 2;
+  #pragma omp section
+    sum += 2;
+  #pragma omp section
+    sum += 2;
+  }
+  if (sum != 6)
+    abort ();
+  sum = 0;
+#pragma omp parallel
+  #pragma omp sections reduction (+:sum) reduction (*:prod)
+    {
+    #pragma omp section
+      {
+       sum += 2;
+       prod *= 2;
+      }
+    #pragma omp section
+      {
+       sum += 2;
+       prod *= 2;
+      }
+    #pragma omp section
+      {
+       sum += 2;
+       prod *= 2;
+      }
+    }
+  if (sum != 6 || prod != 8)
+    abort ();
+  sum = 0;
+  prod = 1;
+#pragma omp parallel sections reduction (+:sum) reduction (*:prod)
+  {
+  #pragma omp section
+    {
+      sum += 2;
+      prod *= 2;
+    }
+  #pragma omp section
+    {
+      sum += 2;
+      prod *= 2;
+    }
+  #pragma omp section
+    {
+      sum += 2;
+      prod *= 2;
+    }
+  }
+  if (sum != 6 || prod != 8)
+    abort ();
+  return 0;
+}