diff options
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index c914e65..dbd5132 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -1955,6 +1955,9 @@ gfc_use_derived (gfc_symbol *sym) if (!sym) return NULL; + if (sym->attr.unlimited_polymorphic) + return sym; + if (sym->attr.generic) sym = gfc_find_dt_in_generic (sym); @@ -4905,6 +4908,11 @@ gfc_type_compatible (gfc_typespec *ts1, gfc_typespec *ts2) bool is_derived1 = (ts1->type == BT_DERIVED); bool is_derived2 = (ts2->type == BT_DERIVED); + if (is_class1 + && ts1->u.derived->components + && ts1->u.derived->components->ts.u.derived->attr.unlimited_polymorphic) + return 1; + if (!is_derived1 && !is_derived2 && !is_class1 && !is_class2) return (ts1->type == ts2->type); |