diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-12-02 13:50:50 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-12-02 13:50:50 +0100 |
commit | 4a82df9a389506e2a34aa22d9a751c2be834e238 (patch) | |
tree | 534799a344b40cd1bc6a21703dc1c432caafadfb /libgomp | |
parent | daa8c1d763c951d2242e1842be80b179f63ebad2 (diff) | |
download | gcc-4a82df9a389506e2a34aa22d9a751c2be834e238.zip gcc-4a82df9a389506e2a34aa22d9a751c2be834e238.tar.gz gcc-4a82df9a389506e2a34aa22d9a751c2be834e238.tar.bz2 |
tree-nested.c (convert_nonlocal_omp_clauses, [...]): Handle OMP_CLAUSE_IN_REDUCTION...
* tree-nested.c (convert_nonlocal_omp_clauses,
convert_local_omp_clauses): Handle OMP_CLAUSE_IN_REDUCTION,
OMP_CLAUSE_TASK_REDUCTION and OMP_CLAUSE__SIMT_ clauses.
(convert_nonlocal_reference_stmt, convert_local_reference_stmt):
Convert clauses for GIMPLE_OMP_TASKGROUP.
* testsuite/libgomp.c/task-reduction-3.c: New test.
From-SVN: r266723
Diffstat (limited to 'libgomp')
-rw-r--r-- | libgomp/ChangeLog | 2 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/task-reduction-3.c | 60 |
2 files changed, 62 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 9a6d9a3..171b5c7 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,5 +1,7 @@ 2018-12-02 Jakub Jelinek <jakub@redhat.com> + * testsuite/libgomp.c/task-reduction-3.c: New test. + * testsuite/libgomp.c-c++-common/cancel-taskgroup-4.c: New test. 2018-11-30 Cesar Philippidis <cesar@codesourcery.com> diff --git a/libgomp/testsuite/libgomp.c/task-reduction-3.c b/libgomp/testsuite/libgomp.c/task-reduction-3.c new file mode 100644 index 0000000..f912bd9 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/task-reduction-3.c @@ -0,0 +1,60 @@ +extern void abort (void); + +int +foo (void) +{ + int i = -1, j = -1, k; + void nested (void) { i++; j++; } + nested (); + #pragma omp taskgroup task_reduction (+: i) + { + #pragma omp task in_reduction (+: i) + i++; + #pragma omp task in_reduction (+: i) + i += 6; + } + #pragma omp taskloop reduction (+: j) + for (k = 0; k < 2; k++) + { + j += 5; + #pragma omp task in_reduction (+: j) + j += 31; + } + return i + j; +} + +int +bar (void) +{ + int i = 0, j = 0; + void nested (void) + { + int k; + #pragma omp taskgroup task_reduction (+: i) + { + #pragma omp task in_reduction (+: i) + i++; + #pragma omp task in_reduction (+: i) + i += 7; + } + #pragma omp taskloop reduction (+: j) + for (k = 0; k < 2; k++) + { + j += 21; + #pragma omp task in_reduction (+: j) + j += 8; + } + } + nested (); + return i + j; +} + +int +main () +{ + if (foo () != (1 + 6 + (5 + 31) * 2)) + abort (); + if (bar () != (1 + 7 + (21 + 8) * 2)) + abort (); + return 0; +} |