Do not replace variable op variable in I/O implied DO loop replacement.
authorThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 6 Jul 2021 05:04:09 +0000 (07:04 +0200)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 6 Jul 2021 05:04:09 +0000 (07:04 +0200)
commitd7e3855d5dd8c001bb65dc7da1cda0249bfc2986
treebcc5ce81885138f5d5c6f024ea217edb60cbf100
parentc64d15224c6dc4dc3b6b3c2c6b6fd5c7e0e9c072
Do not replace variable op variable in I/O implied DO loop replacement.

This PR came about because index expressions of the form k+k in
implied DO loops in I/O statements were considered for replacement
by array slices.

Fixed by only doing the transformation if the expression is of the
type expr OP contastant.

gcc/fortran/ChangeLog:

PR fortran/100227
* frontend-passes.c (traverse_io_block): Adjust test for
when a variable is eligible for the transformation to
array slice.

gcc/testsuite/ChangeLog:

PR fortran/100227
* gfortran.dg/implied_do_io_7.f90: New test.
gcc/fortran/frontend-passes.c
gcc/testsuite/gfortran.dg/implied_do_io_7.f90 [new file with mode: 0644]