commit 17c4fa0bd97c070945004095a06fb7d9e91869e3 Author: Sandra Loosemore Date: Wed Mar 23 18:45:25 2022 -0700 Fortran: Fix clause splitting for OMP masked taskloop directive This patch fixes an obvious coding goof that caused all clauses for the combined OMP masked taskloop directive to be discarded. gcc/fortran/ * trans-openmp.cc (gfc_split_omp_clauses): Fix mask for EXEC_OMP_MASKED_TASKLOOP. gcc/testsuite/ * gfortran.dg/gomp/masked-taskloop.f90: New. diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc index 101924f..25dde82 100644 --- a/gcc/fortran/trans-openmp.cc +++ b/gcc/fortran/trans-openmp.cc @@ -5998,7 +5998,7 @@ gfc_split_omp_clauses (gfc_code *code, innermost = GFC_OMP_SPLIT_DO; break; case EXEC_OMP_MASKED_TASKLOOP: - mask = GFC_OMP_SPLIT_MASKED | GFC_OMP_SPLIT_TASKLOOP; + mask = GFC_OMP_MASK_MASKED | GFC_OMP_MASK_TASKLOOP; innermost = GFC_OMP_SPLIT_TASKLOOP; break; case EXEC_OMP_MASTER_TASKLOOP: diff --git a/gcc/testsuite/gfortran.dg/gomp/masked-taskloop.f90 b/gcc/testsuite/gfortran.dg/gomp/masked-taskloop.f90 new file mode 100644 index 0000000..6fb7111 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/masked-taskloop.f90 @@ -0,0 +1,19 @@ +! { dg-do compile } +! { dg-additional-options "-fopenmp -fdump-tree-original" } + +! There was a bug in the clause splitting for the "masked taskloop" +! combined directive that caused it to lose all the clauses. + +subroutine s1 (a1, a2) + integer :: a1, a2 + integer :: i, j + + !$omp masked taskloop collapse(2) grainsize(4) + do i = 1, a1 + do j = 1, a2 + end do + end do + +end subroutine + +! { dg-final { scan-tree-dump "omp taskloop collapse\\(2\\) grainsize\\(4\\)" "original" } }