[Bug fortran/122369] [OpenMP] Labels mishandled with METADIRECTIVE (bogus: "label ... not defined")
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Nov 4 15:14:19 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122369
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Paul-Antoine Arras <parras@gcc.gnu.org>:
https://gcc.gnu.org/g:7fa8420170b7a8ca40d7414ddcddaed425442cee
commit r16-5027-g7fa8420170b7a8ca40d7414ddcddaed425442cee
Author: Paul-Antoine Arras <parras@baylibre.com>
Date: Tue Oct 28 17:27:47 2025 +0100
OpenMP/Fortran: Revamp handling of labels in metadirectives
[PR122369,PR122508]
When a label is matched in the first statement after the end of a
metadirective
body, it is bound to the associated region. However this prevents it from
being
referenced elsewhere.
This patch fixes it by rebinding such labels to the outer region. It also
ensures that labels defined in an outer region can be referenced in a
metadirective body.
PR fortran/122369
PR fortran/122508
gcc/fortran/ChangeLog:
* gfortran.h (gfc_rebind_label): Declare new function.
* parse.cc (parse_omp_metadirective_body): Rebind labels to the
outer
region. Maintain a vector of metadirective regions.
(gfc_parse_file): Initialise it.
* parse.h (GFC_PARSE_H): Declare it.
* symbol.cc (gfc_get_st_label): Look for existing labels in outer
metadirective regions.
(gfc_rebind_label): Define new function.
(gfc_define_st_label): Accept duplicate labels in metadirective
body.
(gfc_reference_st_label): Accept shared DO termination labels in
metadirective body.
gcc/testsuite/ChangeLog:
* gfortran.dg/gomp/pr122369-1.f90: New test.
* gfortran.dg/gomp/pr122369-2.f90: New test.
* gfortran.dg/gomp/pr122369-3.f90: New test.
* gfortran.dg/gomp/pr122369-4.f90: New test.
* gfortran.dg/gomp/pr122508-1.f90: New test.
* gfortran.dg/gomp/pr122508-2.f90: New test.
More information about the Gcc-bugs
mailing list