On Fri, May 14, 2021 at 06:15:15PM +0200, Tobias Burnus wrote:
> (Testcase requires just posted "Fortran/OpenMP: Handle
>  implicit SAVE for variables in main" patch.)
> (Found when looking the testcases generated for PR 99928
>  but otherwise not related to that PR.)
> 
> 
> "omp parallel master" was unsupported; while the it becomes more
> useful once taskloop is also supported, it can be added by itself.
> 
> OK for mainline?
> 
> Tobias
> 
> PS: I am not sure whether trans-openmp.c really needs this BIND_EXPR
> handling or not; I copied it from gfc_trans_omp_parallel_sections.

I think for parallel it is needed, omp-expand or lowering relies on that.

> Fortran/OpenMP: Support 'omp parallel master'
> 
> gcc/fortran/ChangeLog:
> 
>       * dump-parse-tree.c (show_omp_node, show_code_node): Handle
>       EXEC_OMP_PARALLEL_MASTER.
>       * frontend-passes.c (gfc_code_walker): Likewise.
>       * gfortran.h (enum gfc_statement): Add ST_OMP_PARALLEL_MASTER and
>       ST_OMP_END_PARALLEL_MASTER.
>       (enum gfc_exec_op): Add EXEC_OMP_PARALLEL_MASTER..
>       * match.h (gfc_match_omp_parallel_master): Handle it.
>       * openmp.c (gfc_match_omp_parallel_master, resolve_omp_clauses,
>       omp_code_to_statement, gfc_resolve_omp_directive): Likewise.
>       * parse.c (decode_omp_directive, case_exec_markers,
>       gfc_ascii_statement, parse_omp_structured_block,
>       parse_executable): Likewise.
>       * resolve.c (gfc_resolve_blocks, gfc_resolve_code): Likewise.
>       * st.c (gfc_free_statement): Likewise.
>       * trans-openmp.c (gfc_trans_omp_parallel_master,
>       gfc_trans_omp_workshare, gfc_trans_omp_directive): Likewise.
>       * trans.c (trans_code): Likewise.
> 
> libgomp/ChangeLog:
> 
>       * testsuite/libgomp.fortran/parallel-master.f90: New test.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gfortran.dg/gomp/parallel-master-1.f90: New test.
>       * gfortran.dg/gomp/parallel-master-2.f90: New test.
> --- a/gcc/fortran/gfortran.h
> +++ b/gcc/fortran/gfortran.h
> @@ -266,7 +266,8 @@ enum gfc_statement
>    ST_OMP_REQUIRES, ST_PROCEDURE, ST_GENERIC, ST_CRITICAL, ST_END_CRITICAL,
>    ST_GET_FCN_CHARACTERISTICS, ST_LOCK, ST_UNLOCK, ST_EVENT_POST,
>    ST_EVENT_WAIT, ST_FAIL_IMAGE, ST_FORM_TEAM, ST_CHANGE_TEAM,
> -  ST_END_TEAM, ST_SYNC_TEAM, ST_NONE
> +  ST_END_TEAM, ST_SYNC_TEAM,  ST_OMP_PARALLEL_MASTER,

Superfluous space in between    ^

Otherwise LGTM.

        Jakub

Reply via email to