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

Jakub Jelinek jakub@redhat.com
Tue Jun 1 10:02:56 GMT 2021


On Tue, Jun 01, 2021 at 11:53:12AM +0200, Tobias Burnus wrote:
> 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 error output less. 

The above sentence is weird.  I'd expect semicolon or comma before the
and less error output instead of error output less.

> 	* gfortran.dg/gomp/scan-1.f90: Likewise.
> 	* gfortran.dg/gomp/pr99928-3.f90: New test.
> 	* gfortran.dg/gomp/taskloop-1.f90: New test.

Otherwise LGTM.

	Jakub



More information about the Gcc-patches mailing list