libgomp: Add Fortran testcases for omp_in_explicit_task Fortranized testcases of commits r13-3257-ga58a965eb73 and r13-3258-g0ec4e93fb9f. libgomp/ChangeLog: * testsuite/libgomp.fortran/task-7.f90: New test. * testsuite/libgomp.fortran/task-8.f90: New test. * testsuite/libgomp.fortran/task-in-explicit-1.f90: New test. * testsuite/libgomp.fortran/task-in-explicit-2.f90: New test. * testsuite/libgomp.fortran/task-in-explicit-3.f90: New test. * testsuite/libgomp.fortran/task-reduction-17.f90: New test. * testsuite/libgomp.fortran/task-reduction-18.f90: New test. libgomp/testsuite/libgomp.fortran/task-7.f90 | 22 ++++ libgomp/testsuite/libgomp.fortran/task-8.f90 | 13 +++ .../libgomp.fortran/task-in-explicit-1.f90 | 113 +++++++++++++++++++++ .../libgomp.fortran/task-in-explicit-2.f90 | 21 ++++ .../libgomp.fortran/task-in-explicit-3.f90 | 31 ++++++ .../libgomp.fortran/task-reduction-17.f90 | 32 ++++++ .../libgomp.fortran/task-reduction-18.f90 | 15 +++ 7 files changed, 247 insertions(+) diff --git a/libgomp/testsuite/libgomp.fortran/task-7.f90 b/libgomp/testsuite/libgomp.fortran/task-7.f90 new file mode 100644 index 00000000000..e806bd79663 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-7.f90 @@ -0,0 +1,22 @@ +! { dg-do run } + +program main + use omp_lib + implicit none + + !$omp task final (.true.) + if (.not. omp_in_final ()) & + error stop + !$omp task + if (.not. omp_in_final ()) & + error stop + !$omp target nowait + if (omp_in_final ()) & + error stop + !$omp end target + if (.not. omp_in_final ()) & + error stop + !$omp taskwait + !$omp end task + !$omp end task +end diff --git a/libgomp/testsuite/libgomp.fortran/task-8.f90 b/libgomp/testsuite/libgomp.fortran/task-8.f90 new file mode 100644 index 00000000000..037c63b8fa3 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-8.f90 @@ -0,0 +1,13 @@ +! { dg-do run } + +program main + implicit none + integer :: i + i = 0 + !$omp task + !$omp target nowait private (i) + i = 1 + !$omp end target + !$omp taskwait + !$omp end task +end diff --git a/libgomp/testsuite/libgomp.fortran/task-in-explicit-1.f90 b/libgomp/testsuite/libgomp.fortran/task-in-explicit-1.f90 new file mode 100644 index 00000000000..b6fa21b2c22 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-in-explicit-1.f90 @@ -0,0 +1,113 @@ +! { dg-do run } + +program main + use omp_lib + implicit none + integer :: i + + if (omp_in_explicit_task ()) & + error stop + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + + !$omp task final (.true.) + if (.not. omp_in_explicit_task ()) & + error stop + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp end task + + !$omp parallel + if (omp_in_explicit_task ()) & + error stop + !$omp task if (.false.) + if (.not. omp_in_explicit_task ()) & + error stop + !$omp task if (.false.) + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp end task + !$omp task final (.true.) + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp barrier + if (omp_in_explicit_task ()) & + error stop + !$omp taskloop num_tasks (24) + do i = 1, 32 + if (.not. omp_in_explicit_task ()) & + error stop + end do + !$omp masked + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp end masked + !$omp barrier + if (omp_in_explicit_task ()) & + error stop + !$omp end parallel + + !$omp target + if (omp_in_explicit_task ()) & + error stop + !$omp task if (.false.) + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp end target + + !$omp target teams + !$omp distribute + do i = 1, 4 + if (omp_in_explicit_task ()) then + error stop + else + !$omp parallel + if (omp_in_explicit_task ()) & + error stop + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp barrier + if (omp_in_explicit_task ()) & + error stop + !$omp end parallel + end if + end do + !$omp end target teams + + !$omp teams + !$omp distribute + do i = 1, 4 + if (omp_in_explicit_task ()) then + error stop + else + !$omp parallel + if (omp_in_explicit_task ()) & + error stop + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp barrier + if (omp_in_explicit_task ()) & + error stop + !$omp end parallel + end if + end do + !$omp end distribute + !$omp end teams +end diff --git a/libgomp/testsuite/libgomp.fortran/task-in-explicit-2.f90 b/libgomp/testsuite/libgomp.fortran/task-in-explicit-2.f90 new file mode 100644 index 00000000000..c615ff62dae --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-in-explicit-2.f90 @@ -0,0 +1,21 @@ +! { dg-do run } + +program main + use omp_lib + implicit none + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp target nowait + if (omp_in_explicit_task ()) & + error stop + !$omp end target + if (.not. omp_in_explicit_task ()) & + error stop + !$omp taskwait + !$omp end task + !$omp end task +end diff --git a/libgomp/testsuite/libgomp.fortran/task-in-explicit-3.f90 b/libgomp/testsuite/libgomp.fortran/task-in-explicit-3.f90 new file mode 100644 index 00000000000..629c5676c05 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-in-explicit-3.f90 @@ -0,0 +1,31 @@ +! { dg-do run } + +module m + integer :: a +end module m + +program main + use omp_lib + use m + implicit none + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp task + if (.not. omp_in_explicit_task ()) & + error stop + !$omp taskgroup task_reduction (+: a) + if (.not. omp_in_explicit_task ()) & + error stop + !$omp task in_reduction (+: a) + a = a + 1 + if (.not. omp_in_explicit_task ()) & + error stop + !$omp end task + !$omp end taskgroup + if (.not. omp_in_explicit_task ()) & + error stop + !$omp taskwait + !$omp end task + !$omp end task +end diff --git a/libgomp/testsuite/libgomp.fortran/task-reduction-17.f90 b/libgomp/testsuite/libgomp.fortran/task-reduction-17.f90 new file mode 100644 index 00000000000..12a896269d3 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-reduction-17.f90 @@ -0,0 +1,32 @@ +! { dg-do run } + +module m + integer a +end module m + +program main + use omp_lib + use m + implicit none + + !$omp task final (.true.) + if (.not. omp_in_final ()) & + error stop + !$omp task + if (.not. omp_in_final ()) & + error stop + !$omp taskgroup task_reduction (+: a) + if (.not. omp_in_final ()) & + error stop + !$omp task in_reduction (+: a) + a = a + 1 + if (.not. omp_in_final ()) & + error stop + !$omp end task + !$omp end taskgroup + if (.not. omp_in_final ()) & + error stop + !$omp taskwait + !$omp end task + !$omp end task +end diff --git a/libgomp/testsuite/libgomp.fortran/task-reduction-18.f90 b/libgomp/testsuite/libgomp.fortran/task-reduction-18.f90 new file mode 100644 index 00000000000..0cbd4718322 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task-reduction-18.f90 @@ -0,0 +1,15 @@ +! { dg-do run } + +module m + integer :: a = 0 +end module m + +program main + !$omp task + !$omp taskgroup task_reduction (+: a) + !$omp task in_reduction (+: a) + a = a + 1 + !$omp end task + !$omp end taskgroup + !$omp end task +end