===================================================================
@@ -1246,8 +1246,12 @@ finish_equivalences (gfc_namespace *ns)
{
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;
+ enclosing procedure. If we're in a BLOCK DATA block, then
+ use the location in the sym_root. */
+ if (ns->proc_name)
+ c->where = ns->proc_name->declared_at;
+ else if (ns->is_block_data)
+ c->where = ns->sym_root->n.sym->declared_at;
strcpy (c->name, z->module);
}
else
===================================================================
@@ -0,0 +1,11 @@
+! { dg-do compile }
+module m
+ real :: a(2), b(2)
+ real :: c(2), d(2)
+ equivalence (a, b)
+ equivalence (c, d)
+ common /xcom/ a
+end
+block data
+ use m
+end block data