diff options
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r-- | gcc/fortran/parse.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 9ac7e45..8861e16 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -1499,6 +1499,8 @@ parse_derived (void) int compiling_type, seen_private, seen_sequence, seen_component, error_flag; gfc_statement st; gfc_state_data s; + gfc_symbol *sym; + gfc_component *c; error_flag = 0; @@ -1595,6 +1597,18 @@ parse_derived (void) } } + /* Look for allocatable components. */ + sym = gfc_current_block (); + for (c = sym->components; c; c = c->next) + { + if (c->allocatable || (c->ts.type == BT_DERIVED + && c->ts.derived->attr.alloc_comp)) + { + sym->attr.alloc_comp = 1; + break; + } + } + pop_state (); } |