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