aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r--gcc/fortran/trans-decl.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 159c3dbb..f7568d5 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1759,7 +1759,17 @@ gfc_get_symbol_decl (gfc_symbol * sym)
&& TREE_CODE (sym->ts.u.cl->backend_decl) != INDIRECT_REF)
{
gfc_finish_var_decl (length, sym);
- gcc_assert (!sym->value);
+ if (!sym->attr.associate_var
+ && TREE_CODE (length) == VAR_DECL
+ && sym->value && sym->value->ts.u.cl->length)
+ {
+ gfc_expr *len = sym->value->ts.u.cl->length;
+ DECL_INITIAL (length) = gfc_conv_initializer (len, &len->ts,
+ TREE_TYPE (length),
+ false, false, false);
+ }
+ else
+ gcc_assert (!sym->value);
}
gfc_finish_var_decl (decl, sym);