diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2019-12-10 18:31:33 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2019-12-10 18:31:33 +0000 |
commit | f812dfe8e09a2fed68c74d36e3c9b9f1d8d59c68 (patch) | |
tree | 3392beb5db21b477dc4c4fa3aea01f631cc24f52 /gcc/fortran/misc.c | |
parent | 940317b75c9cc864425e8c4c1f752b2f4acbb1fc (diff) | |
download | gcc-f812dfe8e09a2fed68c74d36e3c9b9f1d8d59c68.zip gcc-f812dfe8e09a2fed68c74d36e3c9b9f1d8d59c68.tar.gz gcc-f812dfe8e09a2fed68c74d36e3c9b9f1d8d59c68.tar.bz2 |
re PR fortran/92863 (ICE in gfc_typename)
2019-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/92863
* misc.c (gfc_typename): If derived component is NULL for
derived or class, return "invalid type" or "invalid class",
respectively.
2019-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/92863
* gfortran.dg/interface_45.f90: New test.
From-SVN: r279180
Diffstat (limited to 'gcc/fortran/misc.c')
-rw-r--r-- | gcc/fortran/misc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/misc.c b/gcc/fortran/misc.c index 97df9ee..3ea8285 100644 --- a/gcc/fortran/misc.c +++ b/gcc/fortran/misc.c @@ -164,9 +164,19 @@ gfc_typename (gfc_typespec *ts) sprintf (buffer, "UNION(%s)", ts->u.derived->name); break; case BT_DERIVED: + if (ts->u.derived == NULL) + { + sprintf (buffer, "invalid type"); + break; + } sprintf (buffer, "TYPE(%s)", ts->u.derived->name); break; case BT_CLASS: + if (ts->u.derived == NULL) + { + sprintf (buffer, "invalid class"); + break; + } ts1 = ts->u.derived->components ? &ts->u.derived->components->ts : NULL; if (ts1 && ts1->u.derived && ts1->u.derived->attr.unlimited_polymorphic) sprintf (buffer, "CLASS(*)"); |