-
- Downloads
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.
Showing
- gcc/fortran/gfortran.h 1 addition, 1 deletiongcc/fortran/gfortran.h
- gcc/fortran/openmp.cc 7 additions, 6 deletionsgcc/fortran/openmp.cc
- gcc/fortran/parse.cc 22 additions, 3 deletionsgcc/fortran/parse.cc
- gcc/testsuite/gfortran.dg/gomp/teams-6.f90 78 additions, 0 deletionsgcc/testsuite/gfortran.dg/gomp/teams-6.f90
Loading
Please register or sign in to comment