]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fortran: improve checking of substring bounds [PR119118]
authorHarald Anlauf <anlauf@gmx.de>
Thu, 6 Mar 2025 20:45:42 +0000 (21:45 +0100)
committerHarald Anlauf <anlauf@gmx.de>
Thu, 6 Mar 2025 21:41:33 +0000 (22:41 +0100)
commitac8a70db59ac309daf866a65b5785e472e76d406
treeafb5bba108f523171e35eafb80a8b2e8a038a0ab
parentbe0942afb3a7080b7b0420a5369bdcf3dcc74b52
Fortran: improve checking of substring bounds [PR119118]

After the fix for pr98490 no substring bounds check was generated if the
substring start was not a variable.  While the purpose of that fix was to
suppress a premature check before implied-do indices were substituted, this
prevented a check if the substring start was an expression or a constant.
A better solution is to defer the check until implied-do indices have been
substituted in the start and end expressions.

PR fortran/119118

gcc/fortran/ChangeLog:

* dependency.cc (gfc_contains_implied_index_p): Helper function to
determine if an expression has a dependence on an implied-do index.
* dependency.h (gfc_contains_implied_index_p): Add prototype.
* trans-expr.cc (gfc_conv_substring): Adjust logic to not generate
substring bounds checks before implied-do indices have been
substituted.

gcc/testsuite/ChangeLog:

* gfortran.dg/bounds_check_23.f90: Generalize test.
* gfortran.dg/bounds_check_26.f90: New test.
gcc/fortran/dependency.cc
gcc/fortran/dependency.h
gcc/fortran/trans-expr.cc
gcc/testsuite/gfortran.dg/bounds_check_23.f90
gcc/testsuite/gfortran.dg/bounds_check_26.f90 [new file with mode: 0644]