aboutsummaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-12-02 13:50:50 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-12-02 13:50:50 +0100
commit4a82df9a389506e2a34aa22d9a751c2be834e238 (patch)
tree534799a344b40cd1bc6a21703dc1c432caafadfb /libgomp
parentdaa8c1d763c951d2242e1842be80b179f63ebad2 (diff)
downloadgcc-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/ChangeLog2
-rw-r--r--libgomp/testsuite/libgomp.c/task-reduction-3.c60
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;
+}