aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2021-06-02 11:48:21 +0200
committerTobias Burnus <tobias@codesourcery.com>2021-06-02 11:48:21 +0200
commit9ca24bd34b6ac44c17f949d89ff60d0fd4665133 (patch)
tree6e9351523c79b5ff805a06566b98a5e0f2de0a3d /gcc
parentc3ab6266bc52c6d42bd1de015397b272515cf40c (diff)
downloadgcc-9ca24bd34b6ac44c17f949d89ff60d0fd4665133.zip
gcc-9ca24bd34b6ac44c17f949d89ff60d0fd4665133.tar.gz
gcc-9ca24bd34b6ac44c17f949d89ff60d0fd4665133.tar.bz2
Fortran/OpenMP: Add gfortran.dg/gomp/taskloop-2.f90 [PR99928]
PR middle-end/99928 gcc/testsuite/ChangeLog * gfortran.dg/gomp/taskloop-2.f90: New.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/taskloop-2.f9072
1 files changed, 72 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/gomp/taskloop-2.f90 b/gcc/testsuite/gfortran.dg/gomp/taskloop-2.f90
new file mode 100644
index 0000000..2142762
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/taskloop-2.f90
@@ -0,0 +1,72 @@
+subroutine foo()
+implicit none
+integer :: i, r
+!$omp taskloop reduction(task, +: r) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+do i = 1, 64
+end do
+!$omp taskloop simd reduction(task, +: r) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+do i = 1, 64
+end do
+!$omp master taskloop reduction(task, +: r) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+do i = 1, 64
+end do
+!$omp master taskloop simd reduction(task, +: r) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+do i = 1, 64
+end do
+!$omp parallel master taskloop reduction(task, +: r) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+do i = 1, 64
+end do
+!$omp parallel master taskloop simd reduction(task, +: r) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+do i = 1, 64
+end do
+
+!$omp taskloop reduction(inscan, +: r) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i = 1, 64 ! { dg-error "OMP SCAN between two structured-block-sequences" "" { target *-*-* } .-1 }
+end do
+!$omp taskloop simd reduction(inscan, +: r) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i = 1, 64 ! { dg-error "OMP SCAN between two structured-block-sequences" "" { target *-*-* } .-1 }
+end do
+!$omp master taskloop reduction(inscan, +: r) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i = 1, 64
+end do
+!$omp master taskloop simd reduction(inscan, +: r) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i = 1, 64
+end do
+!$omp parallel master taskloop reduction(inscan, +: r) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i = 1, 64 ! { dg-error "OMP SCAN between two structured-block-sequences" "" { target *-*-* } .-1 }
+end do
+!$omp parallel master taskloop simd reduction(inscan, +: r) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i = 1, 64 ! { dg-error "OMP SCAN between two structured-block-sequences" "" { target *-*-* } .-1 }
+end do
+end
+
+
+subroutine bar()
+implicit none
+integer :: i, r
+r = 0
+!$omp parallel reduction(+:r)
+ !$omp master taskloop in_reduction(+:r)
+ do i = 1, 64
+ end do
+ !$omp master taskloop simd in_reduction(+:r)
+ do i = 1, 64
+ end do
+ !$omp master
+ !$omp taskloop in_reduction(+:r)
+ do i = 1, 64
+ end do
+ !$omp taskloop simd in_reduction(+:r)
+ do i = 1, 64
+ end do
+ !$omp end master
+!$omp end parallel
+
+!$omp parallel master taskloop in_reduction(+:r) ! { dg-error "Failed to match clause" }
+ do i = 1, 64
+ end do
+
+!$omp parallel master taskloop simd in_reduction(+:r) ! { dg-error "Failed to match clause" }
+ do i = 1, 64
+ end do
+end