From 0ec4e93fb9fa5e9d2424683c5fab1310c8ae2f76 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 12 Oct 2022 18:39:20 +0200 Subject: libgomp: Add omp_in_explicit_task support This is pretty straightforward, if gomp_thread ()->task is NULL, it can't be explicit task, otherwise if gomp_thread ()->task->kind == GOMP_TASK_IMPLICIT, it is an implicit task, otherwise explicit task. 2022-10-12 Jakub Jelinek * omp.h.in (omp_in_explicit_task): Declare. * omp_lib.h.in (omp_in_explicit_task): Likewise. * omp_lib.f90.in (omp_in_explicit_task): New interface. * libgomp.map (OMP_5.2): New symbol version, export omp_in_explicit_task and omp_in_explicit_task_. * task.c (omp_in_explicit_task): New function. * fortran.c (omp_in_explicit_task): Add ialias_redirect. (omp_in_explicit_task_): New function. * libgomp.texi (OpenMP 5.2): Mark omp_in_explicit_task as implemented. * testsuite/libgomp.c-c++-common/task-in-explicit-1.c: New test. * testsuite/libgomp.c-c++-common/task-in-explicit-2.c: New test. * testsuite/libgomp.c-c++-common/task-in-explicit-3.c: New test. --- .../libgomp.c-c++-common/task-in-explicit-3.c | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c (limited to 'libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c') diff --git a/libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c b/libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c new file mode 100644 index 0000000..40eb94d --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ + +#include +#include + +int a; + +int +main () +{ + #pragma omp task + { + if (!omp_in_explicit_task ()) + abort (); + #pragma omp task + { + if (!omp_in_explicit_task ()) + abort (); + #pragma omp taskgroup task_reduction (+: a) + { + if (!omp_in_explicit_task ()) + abort (); + #pragma omp task in_reduction (+: a) + { + ++a; + if (!omp_in_explicit_task ()) + abort (); + } + } + if (!omp_in_explicit_task ()) + abort (); + #pragma omp taskwait + } + } + return 0; +} -- cgit v1.1