Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 275715) +++ gcc/fortran/resolve.c (working copy) @@ -7487,7 +7487,7 @@ conformable_arrays (gfc_expr *e1, gfc_expr *e2) for (tail = e2->ref; tail && tail->next; tail = tail->next); /* First compare rank. */ - if ((tail && e1->rank != tail->u.ar.as->rank) + if ((tail && (!tail->u.ar.as || e1->rank != tail->u.ar.as->rank)) || (!tail && e1->rank != e2->rank)) { gfc_error ("Source-expr at %L must be scalar or have the " Index: gcc/testsuite/gfortran.dg/pr91727.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr91727.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr91727.f90 (working copy) @@ -0,0 +1,9 @@ +! { dg-do compile } +! Code contributed by Gerhard Steinmetz. +program p + type t + class(*), allocatable :: a + end type + type(t) :: x + allocate (x%a, source=[1]) ! { dg-error "have the same rank as" } +end