+2008-10-12 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/37787
+ * dependency.c (gfc_are_equivalenced_arrays): Look in symbol
+ namespace rather than current namespace, if it is available.
+
2008-10-12 Steven G. Kargl <kargls@comcast.net>
PR fortran/37792
|| !e2->symtree->n.sym->attr.in_equivalence|| !e1->rank || !e2->rank)
return 0;
+ if (e1->symtree->n.sym->ns
+ && e1->symtree->n.sym->ns != gfc_current_ns)
+ l = e1->symtree->n.sym->ns->equiv_lists;
+ else
+ l = gfc_current_ns->equiv_lists;
+
/* Go through the equiv_lists and return 1 if the variables
e1 and e2 are members of the same group and satisfy the
requirement on their relative offsets. */
- for (l = gfc_current_ns->equiv_lists; l; l = l->next)
+ for (; l; l = l->next)
{
fl1 = NULL;
fl2 = NULL;
+2008-10-12 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/37787
+ * gfortran.dg/module_equivalence_5.f90: New test.
+
2008-10-12 Steven G. Kargl <kargls@comcast.net>
PR fortran/37792
--- /dev/null
+! { dg-do run }
+!
+! Fixes PR37787 where the EQUIVALENCE between QLA1 and QLA2 wasn't recognized
+! in the dependency checking because the compiler was looking in the wrong name
+! space.
+!
+! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com>
+!
+module stuff
+ integer, parameter :: r4_kv = 4
+contains
+
+ SUBROUTINE CF0004
+! COPYRIGHT 1999 SPACKMAN & HENDRICKSON, INC.
+ REAL(R4_KV), dimension (10) :: QLA1, QLA2, QLA3, &
+ QCA = (/(i, i= 1, 10)/)
+ EQUIVALENCE (QLA1, QLA2)
+ QLA1 = QCA
+ QLA3 = QCA
+ QLA3( 2:10:3) = QCA ( 1:5:2) + 1
+ QLA1( 2:10:3) = QLA2( 1:5:2) + 1 !failed because of dependency
+ if (any (qla1 .ne. qla3)) call abort
+ END SUBROUTINE
+end module
+
+program try_cf004
+ use stuff
+ nf1 = 1
+ nf2 = 2
+ call cf0004
+end
+
+! { dg-final { cleanup-modules "stuff" } }
+