re PR libgomp/87995 (libgomp.c/../libgomp.c-c++-common/cancel-taskgroup-3.c fails...
authorJakub Jelinek <jakub@redhat.com>
Sat, 8 Dec 2018 08:58:24 +0000 (09:58 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 8 Dec 2018 08:58:24 +0000 (09:58 +0100)
PR libgomp/87995
* testsuite/libgomp.c-c++-common/cancel-taskgroup-3.c: Require
tls_runtime effective target.
(t): New threadprivate variable.
(main): Set t in threads which execute iterations of the worksharing
loop.  Propagate that to the task after the loop and don't abort
if the current taskgroup hasn't been cancelled.

From-SVN: r266904

libgomp/ChangeLog
libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-3.c

index 171b5c7..7ce0cdb 100644 (file)
@@ -1,3 +1,13 @@
+2018-12-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR libgomp/87995
+       * testsuite/libgomp.c-c++-common/cancel-taskgroup-3.c: Require
+       tls_runtime effective target.
+       (t): New threadprivate variable.
+       (main): Set t in threads which execute iterations of the worksharing
+       loop.  Propagate that to the task after the loop and don't abort
+       if the current taskgroup hasn't been cancelled.
+
 2018-12-02  Jakub Jelinek  <jakub@redhat.com>
 
        * testsuite/libgomp.c/task-reduction-3.c: New test.
index b9af835..9e07cc1 100644 (file)
@@ -1,9 +1,12 @@
-/* { dg-do run } */
+/* { dg-do run { target tls_runtime } } */
 /* { dg-set-target-env-var OMP_CANCELLATION "true" } */
 
 #include <stdlib.h>
 #include <omp.h>
 
+int t;
+#pragma omp threadprivate (t)
+
 int
 main ()
 {
@@ -42,11 +45,12 @@ main ()
   #pragma omp parallel
   #pragma omp taskgroup
   {
-    #pragma omp taskwait
+    int p;
     #pragma omp for reduction (task, +: a)
     for (i = 0; i < 64; ++i)
       {
        a++;
+       t = 1;
        #pragma omp task in_reduction (+: a)
        {
          volatile int zero = 0;
@@ -58,9 +62,10 @@ main ()
       }
     if (a != 64)
       abort ();
-    #pragma omp task
+    p = t;
+    #pragma omp task firstprivate (p)
     {
-      if (omp_get_cancellation ())
+      if (p && omp_get_cancellation ())
        abort ();
     }
   }