Static analysis for definition of DO index variables in contained procedures.
authorThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 5 Aug 2020 16:37:32 +0000 (18:37 +0200)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 5 Aug 2020 16:38:58 +0000 (18:38 +0200)
commit27eac9ee6137a6b5ae693b54cafa22bdc0cbcd5a
tree1391366f157fe03fe2f44d6dcdba23d28340fad4
parent229752afe3156a3990dacaedb94c76846cebf132
Static analysis for definition of DO index variables in contained procedures.

When encountering a procedure call in a DO loop, this patch checks if
the call is to a contained procedure, and if it is, check for
changes in the index variable.

gcc/fortran/ChangeLog:

PR fortran/96469
* frontend-passes.c (doloop_contained_function_call): New
function.
(doloop_contained_procedure_code): New function.
(CHECK_INQ): Macro for inquire checks.
(doloop_code): Invoke doloop_contained_procedure_code and
doloop_contained_function_call if appropriate.
(do_intent): Likewise.

gcc/testsuite/ChangeLog:

PR fortran/96469
* gfortran.dg/do_check_4.f90: Hide change in index variable
from compile-time analysis.
* gfortran.dg/do_check_13.f90: New test.
gcc/fortran/frontend-passes.c
gcc/testsuite/gfortran.dg/do_check_13.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/do_check_4.f90