https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88357

--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to G. Steinmetz from comment #1)
> 
> Related non-coarray version :
> 
> 
> $ cat z3.f90
> program p
>    type t
>    end type
>    class(t) :: x
>    associate (y => x)
>    end associate
> end
> 
> 
> $ gfortran-9-20181202 -c z3.f90
> z3.f90:4:16:
> 
>     4 |    class(t) :: x
>       |                1
> Error: CLASS variable 'x' at (1) must be dummy, allocatable or pointer
> f951: internal compiler error: Segmentation fault
> 0xc8f33f crash_signal
>         ../../gcc/toplev.c:326
> 0x6ab3c3 resolve_assoc_var
>         ../../gcc/fortran/resolve.c:8718

Seems to be multiple bugs conflated into one report.

Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c       (revision 266766)
+++ gcc/fortran/resolve.c       (working copy)
@@ -8715,7 +8715,8 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_targe
     {
       /* target's rank is 0, but the type of the sym is still array valued,
         which has to be corrected.  */
-      if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as)
+      if (sym->ts.type == BT_CLASS
+         && CLASS_DATA (sym) && CLASS_DATA (sym)->as)
        {
          gfc_array_spec *as;
          symbol_attribute attr;

Reply via email to