From c34938a8aa48af61df1835c2c0dab95d4ef6ca1a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 12 Jun 2008 13:03:50 +0200 Subject: 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 --- libgomp/ChangeLog | 5 ++ libgomp/testsuite/libgomp.c/reduction-5.c | 78 +++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 libgomp/testsuite/libgomp.c/reduction-5.c (limited to 'libgomp') 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 + + PR middle-end/36506 + * testsuite/libgomp.c/reduction-5.c: New test. + 2008-06-11 Jakub Jelinek * 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; +} -- cgit v1.1