https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99928

--- Comment #16 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tobias Burnus <bur...@gcc.gnu.org>:

https://gcc.gnu.org/g:f6bf436d9ab907d090823895abb7a2d5ba7ff50c

commit r12-1139-gf6bf436d9ab907d090823895abb7a2d5ba7ff50c
Author: Tobias Burnus <tob...@codesourcery.com>
Date:   Tue Jun 1 12:46:37 2021 +0200

    Fortran/OpenMP: Support (parallel) master taskloop (simd) [PR99928]

            PR middle-end/99928

    gcc/fortran/ChangeLog:

            * dump-parse-tree.c (show_omp_node, show_code_node): Handle
            (parallel) master taskloop (simd).
            * frontend-passes.c (gfc_code_walker): Set in_omp_workshare
            to false for parallel master taskloop (simd).
            * gfortran.h (enum gfc_statement):
            Add ST_OMP_(END_)(PARALLEL_)MASTER_TASKLOOP(_SIMD).
            (enum gfc_exec_op): EXEC_OMP_(PARALLEL_)MASTER_TASKLOOP(_SIMD).
            * match.h (gfc_match_omp_master_taskloop,
            gfc_match_omp_master_taskloop_simd,
            gfc_match_omp_parallel_master_taskloop,
            gfc_match_omp_parallel_master_taskloop_simd): New prototype.
            * openmp.c (gfc_match_omp_parallel_master_taskloop,
            gfc_match_omp_parallel_master_taskloop_simd,
            gfc_match_omp_master_taskloop,
            gfc_match_omp_master_taskloop_simd): New.
            (gfc_match_omp_taskloop_simd): Permit 'reduction' clause.
            (resolve_omp_clauses): Handle new combined directives; remove
            inscan-reduction check to reduce multiple errors; add
            task-reduction error for 'taskloop simd'.
            (gfc_resolve_omp_parallel_blocks,
            resolve_omp_do, omp_code_to_statement,
            gfc_resolve_omp_directive): Handle new combined constructs.
            * parse.c (decode_omp_directive, next_statement,
            gfc_ascii_statement, parse_omp_do, parse_omp_structured_block,
            parse_executable): Likewise.
            * resolve.c (gfc_resolve_blocks, gfc_resolve_code): Likewise.
            * st.c (gfc_free_statement): Likewise.
            * trans.c (trans_code): Likewise.
            * trans-openmp.c (gfc_split_omp_clauses,
            gfc_trans_omp_directive): Likewise.
            (gfc_trans_omp_parallel_master): Move after
gfc_trans_omp_master_taskloop;
            handle parallel master taskloop (simd) as well.
            (gfc_trans_omp_taskloop): Take gfc_exec_op as arg.
            (gfc_trans_omp_master_taskloop): New.

    gcc/testsuite/ChangeLog:

            * gfortran.dg/gomp/reduction5.f90: Remove dg-error; the issue is
            now diagnosed with less error output.
            * gfortran.dg/gomp/scan-1.f90: Likewise.
            * gfortran.dg/gomp/pr99928-3.f90: New test.
            * gfortran.dg/gomp/taskloop-1.f90: New test.

Reply via email to