diff options
Diffstat (limited to 'gcc/fortran/trans-common.c')
| -rw-r--r-- | gcc/fortran/trans-common.c | 11 |
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); |
