From: Thomas Koenig Date: Mon, 2 Aug 2010 22:04:36 +0000 (+0000) Subject: re PR fortran/45159 (Unnecessary temporaries) X-Git-Tag: releases/gcc-4.6.0~5281 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d1002304ed21324a40d55374d83ce5b97b79212;p=thirdparty%2Fgcc.git re PR fortran/45159 (Unnecessary temporaries) 2010-08-02 Thomas Koenig PR fortran/45159 * depencency.c (gfc_dep_resolver): Fix logic for when a loop can be reversed. 2010-08-02 Thomas Koenig PR fortran/45159 * gfortran.dg/dependency_29.f90: New test. From-SVN: r162829 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index db64bff0596e..3b5a435e0f0d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-08-02 Thomas Koenig + + PR fortran/45159 + * depencency.c (gfc_dep_resolver): Fix logic for when a loop + can be reversed. + 2010-08-02 Thomas Koenig PR fortran/36854 diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index b20b627b3f7b..1eae1ebaa810 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1687f03d369f..a869861b4307 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,16 +1,15 @@ +2010-08-02 Thomas Koenig + + PR fortran/45159 + + * gfortran.dg/dependency_29.f90: New test. + 2010-08-02 Thomas Koenig 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 diff --git a/gcc/testsuite/gfortran.dg/dependency_29.f90 b/gcc/testsuite/gfortran.dg/dependency_29.f90 new file mode 100644 index 000000000000..398bf2c7b254 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_29.f90 @@ -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