From: Harald Anlauf Date: Sat, 27 Jun 2020 12:56:33 +0000 (+0200) Subject: PR fortran/95881 - ICE in resolve_symbol, at fortran/resolve.c:15175 X-Git-Tag: releases/gcc-10.2.0~137 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d12079381e25571f2d5f7bb16eaef07ee89b361b;p=thirdparty%2Fgcc.git PR fortran/95881 - ICE in resolve_symbol, at fortran/resolve.c:15175 Avoid NULL pointer dereference. gcc/fortran/ PR fortran/95881 * resolve.c (resolve_symbol): Avoid NULL pointer dereference. (cherry picked from commit 3cbc0fb39c84ae0a51a9a88649dccd105bf17d6e) --- diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index cc8676b3e032..16f5fee3fbda 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -15173,6 +15173,7 @@ resolve_symbol (gfc_symbol *sym) if (flag_coarray == GFC_FCOARRAY_LIB && sym->ts.type == BT_CLASS && sym->ts.u.derived && CLASS_DATA (sym) && CLASS_DATA (sym)->attr.codimension + && CLASS_DATA (sym)->ts.u.derived && (CLASS_DATA (sym)->ts.u.derived->attr.alloc_comp || CLASS_DATA (sym)->ts.u.derived->attr.pointer_comp)) { diff --git a/gcc/testsuite/gfortran.dg/pr95881.f90 b/gcc/testsuite/gfortran.dg/pr95881.f90 new file mode 100644 index 000000000000..9f171764948a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr95881.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! { dg-options "-fcoarray=lib" } +! PR fortran/95881 - ICE in resolve_symbol, at fortran/resolve.c:15175 + +program p + type t + real, allocatable :: a[:] + end type t + class(t) :: x ! { dg-error "must be dummy, allocatable or pointer" } + allocate (x%a[*]) +end