Thomas Koenig wrote:
the attached patch raises an error if an index variable is redefined
with inquire(iolength=...).
* frontend-passes.c (doloop_code): Check do loop variables for
EXEC_IOLENGTH.
What's the advantage to place it into doloop_code rather than using - as
Steve's patch in the PR - gfc_check_do_variable. Your version looks much
more complicated, adding a special case for IOLENGTH. His version is
already used, e.g., for match_out_tag in io.c - which is about nearly
all intent(out) integer items in IO statements.
Actually, I wonder whether the following (untested) shouldn't be sufficient:
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -3892,3 +3892,3 @@ match_inquire_element (gfc_inquire *inquire)
RETM m = match_vtag (&tag_s_decimal, &inquire->decimal);
- RETM m = match_vtag (&tag_size, &inquire->size);
+ RETM m = match_out_tag (&tag_size, &inquire->size);
RETM m = match_vtag (&tag_s_encoding, &inquire->encoding);
@@ -3897,3 +3897,3 @@ match_inquire_element (gfc_inquire *inquire)
RETM m = match_vtag (&tag_s_pad, &inquire->pad);
- RETM m = match_vtag (&tag_iolength, &inquire->iolength);
+ RETM m = match_out_tag (&tag_iolength, &inquire->iolength);
RETM m = match_vtag (&tag_convert, &inquire->convert);
Tobias