diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-02-16 14:17:35 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-02-16 14:17:35 +0100 |
commit | ebf9b6c13f0847ddcc22e540a5fcdbf644e85a9c (patch) | |
tree | 06b58649d06f9511a250566d74e8777425b8d241 /gcc/fortran/io.c | |
parent | 3f16a1678156035bbe73b217fbce4d9c27d1d559 (diff) | |
download | gcc-ebf9b6c13f0847ddcc22e540a5fcdbf644e85a9c.zip gcc-ebf9b6c13f0847ddcc22e540a5fcdbf644e85a9c.tar.gz gcc-ebf9b6c13f0847ddcc22e540a5fcdbf644e85a9c.tar.bz2 |
Fortran: Reject DT as fmt in I/O statments [PR99111]
gcc/fortran/ChangeLog:
PR fortran/99111
* io.c (resolve_tag_format): Reject BT_DERIVED/CLASS/VOID
as (array-valued) FORMAT tag.
gcc/testsuite/ChangeLog:
PR fortran/99111
* gfortran.dg/fmt_nonchar_1.f90: New test.
* gfortran.dg/fmt_nonchar_2.f90: New test.
Diffstat (limited to 'gcc/fortran/io.c')
-rw-r--r-- | gcc/fortran/io.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index da6ad17..40cd76e 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -1762,6 +1762,13 @@ resolve_tag_format (gfc_expr *e) It may be assigned an Hollerith constant. */ if (e->ts.type != BT_CHARACTER) { + if (e->ts.type == BT_DERIVED || e->ts.type == BT_CLASS + || e->ts.type == BT_VOID) + { + gfc_error ("Non-character non-Hollerith in FORMAT tag at %L", + &e->where); + return false; + } if (!gfc_notify_std (GFC_STD_LEGACY, "Non-character in FORMAT tag " "at %L", &e->where)) return false; |