===================================================================
@@ -615,7 +615,8 @@ gfc_compare_derived_types (gfc_symbol *d
if (derived1 == derived2)
return 1;
- gcc_assert (derived1 && derived2);
+ if (!derived1 || !derived2)
+ gfc_internal_error ("gfc_compare_derived_types: invalid derived type");
/* Compare UNION types specially. */
if (derived1->attr.flavor == FL_UNION || derived2->attr.flavor == FL_UNION)
===================================================================
@@ -0,0 +1,10 @@
+! { dg-do compile }
+program p
+ type t
+ integer :: n
+ end type
+ type(t) :: x
+ class(t) :: y ! { dg-error "must be dummy, allocatable or pointer" }
+ print *, extends_type_of(x, y)
+ print *, extends_type_of(y, x)
+end