diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-06-12 13:03:50 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-06-12 13:03:50 +0200 |
commit | c34938a8aa48af61df1835c2c0dab95d4ef6ca1a (patch) | |
tree | 8845c75445d9484761a9f34010411ff92b5aefca /libgomp | |
parent | b377855627f22cdef5712621e89e68048a94a164 (diff) | |
download | gcc-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')
-rw-r--r-- | libgomp/ChangeLog | 5 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/reduction-5.c | 78 |
2 files changed, 83 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index fb70823c..ff9ed03 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2008-06-12 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/36506 + * testsuite/libgomp.c/reduction-5.c: New test. + 2008-06-11 Jakub Jelinek <jakub@redhat.com> * libgomp.h (struct gomp_task): Add in_tied_task field. 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; +} |