]> gcc.gnu.org Git - gcc.git/commit
OpenMP/Fortran: Reject declarations between target + teams
authorTobias Burnus <tobias@codesourcery.com>
Tue, 25 Jul 2023 13:43:58 +0000 (15:43 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Tue, 25 Jul 2023 13:43:58 +0000 (15:43 +0200)
commit09dda270380fe13e7b4722305cb1122df1f779a0
tree8f7054e1df3db3d39d1ce497b4595ab9ba417c07
parentd8dc61bb5ab99c3239ea93a37097f9419bee0211
OpenMP/Fortran: Reject declarations between target + teams

While commit r14-2754-g2e31fe431b08b0302e1fa8a1c18ee51adafd41df
detected executable statements, declarations do not show up as
executable statements.  Hence, we now check whether the first
statement after TARGET is TEAMS - such that we can detect data
statements like type or variable declarations.  Fortran semantics
ensures that only executable directives/statemens can come after
'!$omp end teams' such that those can be detected with the
previous check.

Note that statements returning ST_NONE such as 'omp nothing' or
'omp error at(compilation)' will still slip through.

PR fortran/110725
PR middle-end/71065

gcc/fortran/ChangeLog:

* gfortran.h (gfc_omp_clauses): Add target_first_st_is_teams.
* parse.cc (parse_omp_structured_block): Set it if the first
statement in the structured block of a TARGET is TEAMS or
a combined/composite starting with TEAMS.
* openmp.cc (resolve_omp_target): Also show an error for
contains_teams_construct without target_first_st_is_teams.

gcc/testsuite/ChangeLog:

* gfortran.dg/gomp/teams-6.f90: New test.
gcc/fortran/gfortran.h
gcc/fortran/openmp.cc
gcc/fortran/parse.cc
gcc/testsuite/gfortran.dg/gomp/teams-6.f90 [new file with mode: 0644]
This page took 0.067693 seconds and 6 git commands to generate.