Fortran: Add 'omp scan' support of OpenMP 5.0
authorTobias Burnus <tobias@codesourcery.com>
Tue, 8 Dec 2020 15:49:46 +0000 (16:49 +0100)
committerTobias Burnus <tobias@codesourcery.com>
Tue, 8 Dec 2020 15:54:22 +0000 (16:54 +0100)
commit005cff4e2ecbd5c4e2ef978fe4842fa3c8c79f47
treefd67e840cf2cc4a475ce8a08dd25ed9cdf595d5a
parente401db7bfd8cf86d3833805a81b1252884eb1c9d
Fortran: Add 'omp scan' support of OpenMP 5.0

gcc/fortran/ChangeLog:

* dump-parse-tree.c (show_omp_clauses, show_omp_node,
show_code_node): Handle OMP SCAN.
* gfortran.h (enum gfc_statement): Add ST_OMP_SCAN.
(enum): Add OMP_LIST_SCAN_IN and OMP_LIST_SCAN_EX.
(enum gfc_exec_op): Add EXEC_OMP_SCAN.
* match.h (gfc_match_omp_scan): New prototype.
* openmp.c (gfc_match_omp_scan): New.
(gfc_match_omp_taskgroup): Cleanup.
(resolve_omp_clauses, gfc_resolve_omp_do_blocks,
omp_code_to_statement, gfc_resolve_omp_directive): Handle 'omp scan'.
* parse.c (decode_omp_directive, next_statement,
gfc_ascii_statement): Likewise.
* resolve.c (gfc_resolve_code): Handle EXEC_OMP_SCAN.
* st.c (gfc_free_statement): Likewise.
* trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_do,
gfc_split_omp_clauses): Handle 'omp scan'.

libgomp/ChangeLog:

* testsuite/libgomp.fortran/scan-1.f90: New test.

gcc/testsuite/ChangeLog:

* gfortran.dg/gomp/reduction4.f90: Update; move FE some tests to ...
* gfortran.dg/gomp/reduction6.f90: ... this new test and ...
* gfortran.dg/gomp/reduction7.f90: ... this new test.
* gfortran.dg/gomp/reduction5.f90: Add dg-error.
* gfortran.dg/gomp/scan-1.f90: New test.
* gfortran.dg/gomp/scan-2.f90: New test.
* gfortran.dg/gomp/scan-3.f90: New test.
* gfortran.dg/gomp/scan-4.f90: New test.
* gfortran.dg/gomp/scan-5.f90: New test.
* gfortran.dg/gomp/scan-6.f90: New test.
* gfortran.dg/gomp/scan-7.f90: New test.
20 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/testsuite/gfortran.dg/gomp/reduction4.f90
gcc/testsuite/gfortran.dg/gomp/reduction5.f90
gcc/testsuite/gfortran.dg/gomp/reduction6.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/reduction7.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-5.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-6.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/scan-7.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/scan-1.f90 [new file with mode: 0644]