aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-06-12 13:03:50 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2008-06-12 13:03:50 +0200
commitc34938a8aa48af61df1835c2c0dab95d4ef6ca1a (patch)
tree8845c75445d9484761a9f34010411ff92b5aefca /libgomp/testsuite
parentb377855627f22cdef5712621e89e68048a94a164 (diff)
downloadgcc-c34938a8aa48af61df1835c2c0dab95d4ef6ca1a.zip
gcc-c34938a8aa48af61df1835c2c0dab95d4ef6ca1a.tar.gz
gcc-c34938a8aa48af61df1835c2c0dab95d4ef6ca1a.tar.bz2
re PR middle-end/36506 (Broken #pragma omp sections reduction (+:x))
PR middle-end/36506 * omp-low.c (expand_omp_sections): Handle #pragma omp sections with reductions. * testsuite/libgomp.c/reduction-5.c: New test. From-SVN: r136696
Diffstat (limited to 'libgomp/testsuite')
-rw-r--r--libgomp/testsuite/libgomp.c/reduction-5.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.c/reduction-5.c b/libgomp/testsuite/libgomp.c/reduction-5.c
new file mode 100644
index 0000000..de87d9f
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c/reduction-5.c
@@ -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;
+}