aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/trans-common.c')
-rw-r--r--gcc/fortran/trans-common.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index 5350eac..83da32f 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -219,7 +219,7 @@ add_segments (segment_info *list, segment_info *v)
/* Construct mangled common block name from symbol name. */
static tree
-gfc_sym_mangled_common_id (const char *name)
+gfc_sym_mangled_common_id (const char *name)
{
int has_underscore;
char mangled_name[GFC_MAX_MANGLED_SYMBOL_LEN + 1];
@@ -1054,13 +1054,18 @@ gfc_trans_common (gfc_namespace *ns)
if (ns->blank_common.head != NULL)
{
c = gfc_get_common_head ();
+
/* We've lost the real location, so use the location of the
enclosing procedure. */
- c->where = ns->proc_name->declared_at;
+ if (ns->proc_name != NULL)
+ c->where = ns->proc_name->declared_at;
+ else
+ c->where = ns->blank_common.head->common_head->where;
+
strcpy (c->name, BLANK_COMMON_NAME);
translate_common (c, ns->blank_common.head);
}
-
+
/* Translate all named common blocks. */
gfc_traverse_symtree (ns->common_root, named_common);