diff options
author | Harald Anlauf <anlauf@gmx.de> | 2020-06-27 14:56:33 +0200 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 13:15:11 -0300 |
commit | 7b67abf9f65faee688618b28490e7020f6b8999b (patch) | |
tree | b8dff052b7843545fa48fc952d5145dadc0fcb63 | |
parent | ba0d46e4a2290eb8552a3471d1275ac71137aa3d (diff) | |
download | gcc-7b67abf9f65faee688618b28490e7020f6b8999b.zip gcc-7b67abf9f65faee688618b28490e7020f6b8999b.tar.gz gcc-7b67abf9f65faee688618b28490e7020f6b8999b.tar.bz2 |
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.
-rw-r--r-- | gcc/fortran/resolve.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr95881.f90 | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 6fa34ca..f3e8ffc 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -15170,6 +15170,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 0000000..9f17176 --- /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 |