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.c8
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;