]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2008-10-19 Paul Thomas <pault@gcc.gnu.org>
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 19 Oct 2008 12:51:06 +0000 (12:51 +0000)
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 19 Oct 2008 12:51:06 +0000 (12:51 +0000)
        PR fortran/37723
        * dependency.c (gfc_dep_resolver ): If we find equal array
element references, go on to the next reference.

2008-10-19  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/37723
        * gfortran.dg/dependency_22.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141221 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/dependency.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/dependency_22.f90 [new file with mode: 0644]

index d4ff6b34c306033f4e6f3d220f08378f6059e951..4c350199bb430cf298571918e2166c2d67ca6fef 100644 (file)
@@ -1,3 +1,9 @@
+2008-10-19  Paul Thomas  <pault@gcc.gnu.org>
+
+        PR fortran/37723
+        * dependency.c (gfc_dep_resolver ): If we find equal array
+       element references, go on to the next reference.
+
 2008-10-16  Daniel Kraft  <d@domob.eu>
 
        * resolve.c (resolve_elemental_actual): Handle calls to intrinsic
index 05a3dccf1a97d9c74d5bcc19a220022a221f8bbb..44187fe81536498a90517d6907f70a43dd5db48e 100644 (file)
@@ -1252,6 +1252,14 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref)
              if (this_dep > fin_dep)
                fin_dep = this_dep;
            }
+
+         /* If this is an equal element, we have to keep going until we find
+            the "real" array reference.  */
+         if (lref->u.ar.type == AR_ELEMENT
+               && rref->u.ar.type == AR_ELEMENT
+               && fin_dep == GFC_DEP_EQUAL)
+           break;
+
          /* Exactly matching and forward overlapping ranges don't cause a
             dependency.  */
          if (fin_dep < GFC_DEP_OVERLAP)
index eaf1f2b8853963a20ac2d4e3a41512d1e1a2b3be..0d2ef196bff31c4fd7550a37ed1b5e4f0e61052b 100644 (file)
@@ -1,3 +1,8 @@
+2008-10-19  Paul Thomas  <pault@gcc.gnu.org>
+
+        PR fortran/37723
+        * gfortran.dg/dependency_22.f90: New test.
+
 2008-10-18  Danny Smith  <dannysmith@users.sourceforge.net>
 
        * gcc.dg/dll-2.c: Revert 2008-08-09 change (R138893): Change
diff --git a/gcc/testsuite/gfortran.dg/dependency_22.f90 b/gcc/testsuite/gfortran.dg/dependency_22.f90
new file mode 100644 (file)
index 0000000..bedf702
--- /dev/null
@@ -0,0 +1,28 @@
+! { dg-do run }
+!
+! Test the fix for PR37723 in which the array element reference masked the dependency
+! by inhibiting the test.
+!
+! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com>
+!
+      program try_cg0071
+      type seq
+          integer ia(10)
+      end type
+      TYPE(SEQ) UDA1R
+      type(seq) uda(1)
+
+      do j1 = 1,10
+        uda1r%ia(j1) = j1
+      enddo
+
+      uda = uda1r
+      UDA(1)%IA(1:9) = UDA(1)%IA(9:1:-1)+1
+
+      DO J1 = 1,9
+         if (UDA1R%IA(10-J1)+1 /=  Uda(1)%IA(J1)) call abort()
+      ENDDO
+
+      end
+
+