mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
re PR libgomp/87995 (libgomp.c/../libgomp.c-c++-common/cancel-taskgroup-3.c fails consistently after r265930)
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
This commit is contained in:
parent
b03a449727
commit
6997628d35
@ -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.
|
||||
|
@ -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 ();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user