]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/45159 (Unnecessary temporaries)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 2 Aug 2010 22:04:36 +0000 (22:04 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 2 Aug 2010 22:04:36 +0000 (22:04 +0000)
2010-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/45159
* depencency.c (gfc_dep_resolver):  Fix logic for when a loop
can be reversed.

2010-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/45159

* gfortran.dg/dependency_29.f90:  New test.

From-SVN: r162829

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

index db64bff0596ebe9b85eeba574bee214565b0a50f..3b5a435e0f0d1de720292ca9c0d99e2a349a5695 100644 (file)
@@ -1,3 +1,9 @@
+2010-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/45159
+       * depencency.c (gfc_dep_resolver):  Fix logic for when a loop
+       can be reversed.
+
 2010-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/36854
index b20b627b3f7bb6b11eddf0f9d1fdcec5853b78d4..1eae1ebaa810a8558f0164f06c3b0f1a9b71976a 100644 (file)
@@ -1716,8 +1716,8 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse)
 
                  /* If no intention of reversing or reversing is explicitly
                     inhibited, convert backward dependence to overlap.  */
-                 if ((reverse == NULL && this_dep == GFC_DEP_BACKWARD)
-                       || (reverse && reverse[n] == GFC_CANNOT_REVERSE))
+                 if (this_dep == GFC_DEP_BACKWARD
+                     && (reverse == NULL || reverse[n] == GFC_CANNOT_REVERSE))
                    this_dep = GFC_DEP_OVERLAP;
                }
 
index 1687f03d369f6d02bfc26320bd63c980512d38a1..a869861b4307f587f4e40909948109b5e99108a2 100644 (file)
@@ -1,16 +1,15 @@
+2010-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/45159
+
+       * gfortran.dg/dependency_29.f90:  New test.
+
 2010-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/36854
-       * dependency.h:  Add prototype for gfc_are_identical_variables.
-       * frontend-passes.c:  Include depencency.h.
-       (optimimize_equality):  Use gfc_are_identical_variables.
-       * dependency.c (identical_array_ref): New function.
-       (gfc_are_identical_variables):  New function.
-       (gfc_deb_compare_expr):  Use gfc_are_identical_variables.
-       * dependency.c (gfc_check_section_vs_section).  Rename gfc_
-       prefix from statc function.
-       (check_section_vs_section): Change arguments to gfc_array_ref,
-       adjust function body accordingly.
+       * gfortran.dg/character_comparison_2.f90:  New test.
+       * gfortran.dg/character_comparison_3.f90:  New test.
+       * gfortran.dg/dependency_28.f90:  New test.
 
 2010-08-02  Bernd Schmidt  <bernds@codesourcery.com>
 
diff --git a/gcc/testsuite/gfortran.dg/dependency_29.f90 b/gcc/testsuite/gfortran.dg/dependency_29.f90
new file mode 100644 (file)
index 0000000..398bf2c
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-Warray-temporaries" }
+
+subroutine t1(n1,n2, gfft, ufft)
+  implicit none
+  integer :: n1, n2, i
+  real :: gfft(n1,n2), ufft(n2)
+  DO i=1, n1
+     gfft(i,:)=gfft(i,:)*ufft(i)
+  END DO
+end subroutine t1