On Fri, Feb 10, 2023 at 12:52:47PM +0100, Tobias Burnus wrote:
> > I'm afraid this is needed but insufficient.
> > I think
> >              case EXEC_OMP_MASKED_TASKLOOP:
> >              case EXEC_OMP_MASKED_TASKLOOP_SIMD:
> >              case EXEC_OMP_MASTER_TASKLOOP:
> >              case EXEC_OMP_MASTER_TASKLOOP_SIMD:
> >           case EXEC_OMP_PARALLEL_LOOP:
> >           case EXEC_OMP_TARGET_PARALLEL_LOOP:
> >           case EXEC_OMP_TARGET_TEAMS_LOOP:
> >           case EXEC_OMP_TARGET_SIMD:
> >           case EXEC_OMP_TEAMS_LOOP:
> > should be in the list above (of course alphabetically sorted in between the
> > others)
> >             gfc_resolve_omp_parallel_blocks (code, ns);
> 
> I think 'TARGET_SIMD' shouldn't be resolved though parallel blocks but

You're right, we use gfc_resolve_omp_parallel_blocks for
parallel, teams, task but not for target alone.

> can call directly call gfc_resolve_omp_do_blocks (as
> currently/previously implemented). The masked version were already
> handled inside gfc_resolve_omp_parallel_blocks but missing in
> gfc_resolve_code, while the 'loop' ones had to be added to both.
> 
> (I did not extend the testcase, but I updated two to add additional
> dg-error to the same line.)

> gcc/fortran/ChangeLog:
> 
>       PR fortran/108512
>       * openmp.cc (gfc_resolve_omp_parallel_blocks): Handle combined 'loop'
>       directives.
>       (gfc_resolve_do_iterator): Set a source location for added
>       'private'-clause arguments.
>       * resolve.cc (gfc_resolve_code): Call gfc_resolve_omp_do_blocks
>       also for EXEC_OMP_LOOP and gfc_resolve_omp_parallel_blocks for
>       combined directives with loop + '{masked,master} taskloop (simd)'.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR fortran/108512
>       * gfortran.dg/gomp/loop-5.f90: New test.
>       * gfortran.dg/gomp/loop-2.f90: Update dg-error.
>       * gfortran.dg/gomp/taskloop-2.f90: Update dg-error.

LGTM, thanks.

        Jakub

Reply via email to