aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2021-07-18 21:35:53 +0200
committerHarald Anlauf <anlauf@gmx.de>2021-07-18 21:35:53 +0200
commitf527b8233498b40c8a2c616b82265f2e58aba42a (patch)
treeb0e60a5e99485afdd7d89bddb69daf32684ae11a /gcc
parent5586e7e85de381f3df843091494889f8ad8e3e1f (diff)
downloadgcc-f527b8233498b40c8a2c616b82265f2e58aba42a.zip
gcc-f527b8233498b40c8a2c616b82265f2e58aba42a.tar.gz
gcc-f527b8233498b40c8a2c616b82265f2e58aba42a.tar.bz2
Fortran: reject FORMAT tag of unknown type.
gcc/fortran/ChangeLog: PR fortran/101084 * io.c (resolve_tag_format): Extend FORMAT check to unknown type. gcc/testsuite/ChangeLog: PR fortran/101084 * gfortran.dg/fmt_nonchar_3.f90: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/io.c2
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_nonchar_3.f907
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 40cd76e..fc97df7 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -1763,7 +1763,7 @@ resolve_tag_format (gfc_expr *e)
if (e->ts.type != BT_CHARACTER)
{
if (e->ts.type == BT_DERIVED || e->ts.type == BT_CLASS
- || e->ts.type == BT_VOID)
+ || e->ts.type == BT_VOID || e->ts.type == BT_UNKNOWN)
{
gfc_error ("Non-character non-Hollerith in FORMAT tag at %L",
&e->where);
diff --git a/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90 b/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90
new file mode 100644
index 0000000..3b3c260
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/101084
+
+program p
+ integer, parameter :: a(0) = 1
+ print int(a) ! { dg-error "Non-character non-Hollerith in FORMAT tag" }
+end