diff options
author | Louis Krupp <louis.krupp@zoho.com> | 2018-01-16 01:09:11 +0000 |
---|---|---|
committer | Louis Krupp <lkrupp@gcc.gnu.org> | 2018-01-16 01:09:11 +0000 |
commit | 75a3c61ae44b7820baf7946c3ddf3632adedcccf (patch) | |
tree | bc36aeb6e8b943718802996c56770e959baf1a07 /gcc/fortran/misc.c | |
parent | c662b64cf93dbb8b0ef52acc9cc241afb2d6f221 (diff) | |
download | gcc-75a3c61ae44b7820baf7946c3ddf3632adedcccf.zip gcc-75a3c61ae44b7820baf7946c3ddf3632adedcccf.tar.gz gcc-75a3c61ae44b7820baf7946c3ddf3632adedcccf.tar.bz2 |
re PR fortran/82257 (f951: Internal compiler error segmentation fault)
2018-01-15 Louis Krupp <louis.krupp@zoho.com>
PR fortran/82257
* interface.c (compare_rank): Don't try to retrieve CLASS_DATA
from symbol marked unlimited polymorphic.
* resolve.c (resolve_structure_cons): Likewise.
* misc.c (gfc_typename): Don't dereference derived->components
if it's NULL.
2018-01-15 Louis Krupp <louis.krupp@zoho.com>
PR fortran/82257
* gfortran.dg/unlimited_polymorphic_28.f90: New test.
From-SVN: r256720
Diffstat (limited to 'gcc/fortran/misc.c')
-rw-r--r-- | gcc/fortran/misc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/misc.c b/gcc/fortran/misc.c index 80d282e..ec1f548 100644 --- a/gcc/fortran/misc.c +++ b/gcc/fortran/misc.c @@ -156,7 +156,8 @@ gfc_typename (gfc_typespec *ts) sprintf (buffer, "TYPE(%s)", ts->u.derived->name); break; case BT_CLASS: - ts = &ts->u.derived->components->ts; + if (ts->u.derived->components) + ts = &ts->u.derived->components->ts; if (ts->u.derived->attr.unlimited_polymorphic) sprintf (buffer, "CLASS(*)"); else |