PR fortran/88379 - ICE with allocatable coarray, class and associate
authorHarald Anlauf <anlauf@gmx.de>
Tue, 30 Jun 2020 21:36:56 +0000 (23:36 +0200)
committerHarald Anlauf <anlauf@gmx.de>
Tue, 30 Jun 2020 21:36:56 +0000 (23:36 +0200)
Catch NULL pointer dereference for ASSOCIATE on allocatable coarray variable.

gcc/fortran/
PR fortran/88379
* resolve.c (resolve_assoc_var): Avoid NULL pointer dereference.

gcc/fortran/resolve.c
gcc/testsuite/gfortran.dg/pr88379.f90 [new file with mode: 0644]

index f3e8ffc204c044dd1496f83f371b7d7dc5a3ef1a..4a2abd00f4afbaa65ed5584f80cb69be731440e1 100644 (file)
@@ -9045,7 +9045,7 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target)
          as = NULL;
          sym->ts = *ts;
          sym->ts.type = BT_CLASS;
-         attr = CLASS_DATA (sym)->attr;
+         attr = CLASS_DATA (sym) ? CLASS_DATA (sym)->attr : sym->attr;
          attr.class_ok = 0;
          attr.associate_var = 1;
          attr.dimension = attr.codimension = 0;
diff --git a/gcc/testsuite/gfortran.dg/pr88379.f90 b/gcc/testsuite/gfortran.dg/pr88379.f90
new file mode 100644 (file)
index 0000000..48a23af
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+! PR fortran/88379 - ICE with allocatable coarray, class and associate
+
+program p
+  type t
+  end type t
+  class(t), allocatable :: x[:]
+  associate (y => x)
+  end associate
+end