diff options
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r-- | gcc/fortran/trans-decl.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index aaa4006..1b56840 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -2160,6 +2160,10 @@ gfc_create_module_variable (gfc_symbol * sym) if (sym->attr.use_assoc || sym->attr.in_common) return; + /* Equivalenced variables arrive here after creation. */ + if (sym->backend_decl && sym->equiv_built) + return; + if (sym->backend_decl) internal_error ("backend decl for module variable %s already exists", sym->name); @@ -2336,8 +2340,6 @@ gfc_generate_function_code (gfc_namespace * ns) gfc_start_block (&block); - gfc_generate_contained_functions (ns); - if (ns->entries && ns->proc_name->ts.type == BT_CHARACTER) { /* Copy length backend_decls to all entry point result @@ -2354,6 +2356,8 @@ gfc_generate_function_code (gfc_namespace * ns) /* Translate COMMON blocks. */ gfc_trans_common (ns); + gfc_generate_contained_functions (ns); + generate_local_vars (ns); current_function_return_label = NULL; |