]> gcc.gnu.org Git - gcc.git/commit
Fortran: Implement OpenMP 5.1 scope construct
authorTobias Burnus <tobias@codesourcery.com>
Tue, 17 Aug 2021 13:50:11 +0000 (15:50 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Tue, 17 Aug 2021 13:51:03 +0000 (15:51 +0200)
commitf8d535f3fec81c1cc84e22df5500e693544ec65b
tree4687f4e37c68a73eda3dc8301ecda4b1cd6a56c5
parent20698ec5b681e23fa3404ed0ef78e3367b28e16d
Fortran: Implement OpenMP 5.1 scope construct

Fortran version to commit e45483c7c4badc4bf2d6ced22360ce1ab172967f,
which implemented OpenMP's scope construct for C and C++.
Most testcases are based on the C testcases; it also contains some
testcases which existed previously but had no Fortran equivalent.

gcc/fortran/ChangeLog:

* dump-parse-tree.c (show_omp_node, show_code_node): Handle
EXEC_OMP_SCOPE.
* gfortran.h (enum gfc_statement): Add ST_OMP_(END_)SCOPE.
(enum gfc_exec_op): Add EXEC_OMP_SCOPE.
* match.h (gfc_match_omp_scope): New.
* openmp.c (OMP_SCOPE_CLAUSES): Define
(gfc_match_omp_scope): New.
(gfc_match_omp_cancellation_point, gfc_match_omp_end_nowait):
Improve error diagnostic.
(omp_code_to_statement): Handle ST_OMP_SCOPE.
(gfc_resolve_omp_directive): Handle EXEC_OMP_SCOPE.
* parse.c (decode_omp_directive, next_statement,
gfc_ascii_statement, parse_omp_structured_block,
parse_executable): Handle OpenMP's scope construct.
* resolve.c (gfc_resolve_blocks): Likewise
* st.c (gfc_free_statement): Likewise
* trans-openmp.c (gfc_trans_omp_scope): New.
(gfc_trans_omp_directive): Call it.
* trans.c (trans_code): handle EXEC_OMP_SCOPE.

libgomp/ChangeLog:

* testsuite/libgomp.fortran/scope-1.f90: New test.
* testsuite/libgomp.fortran/task-reduction-16.f90: New test.

gcc/testsuite/ChangeLog:

* gfortran.dg/gomp/scan-1.f90:
* gfortran.dg/gomp/cancel-1.f90: New test.
* gfortran.dg/gomp/cancel-4.f90: New test.
* gfortran.dg/gomp/loop-4.f90: New test.
* gfortran.dg/gomp/nesting-1.f90: New test.
* gfortran.dg/gomp/nesting-2.f90: New test.
* gfortran.dg/gomp/nesting-3.f90: New test.
* gfortran.dg/gomp/nowait-1.f90: New test.
* gfortran.dg/gomp/reduction-task-1.f90: New test.
* gfortran.dg/gomp/reduction-task-2.f90: New test.
* gfortran.dg/gomp/reduction-task-2a.f90: New test.
* gfortran.dg/gomp/reduction-task-3.f90: New test.
* gfortran.dg/gomp/scope-1.f90: New test.
* gfortran.dg/gomp/scope-2.f90: New test.
25 files changed:
gcc/fortran/dump-parse-tree.c
gcc/fortran/gfortran.h
gcc/fortran/match.h
gcc/fortran/openmp.c
gcc/fortran/parse.c
gcc/fortran/resolve.c
gcc/fortran/st.c
gcc/fortran/trans-openmp.c
gcc/fortran/trans.c
gcc/testsuite/gfortran.dg/gomp/cancel-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/cancel-4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/loop-4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/nesting-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/nesting-2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/nesting-3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/nowait-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/reduction-task-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/reduction-task-2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/reduction-task-2a.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/reduction-task-3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-1.f90
gcc/testsuite/gfortran.dg/gomp/scope-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scope-2.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/scope-1.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/task-reduction-16.f90 [new file with mode: 0644]
This page took 0.065615 seconds and 5 git commands to generate.