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:
Jakub Jelinek 2018-12-08 09:58:24 +01:00 committed by Jakub Jelinek
parent b03a449727
commit 6997628d35
2 changed files with 19 additions and 4 deletions

View 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.

View 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 ();
}
}