summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-29 05:10:22 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-29 05:10:22 +0000
commita16588341fdf44635524b5be7446f9aa9d31d591 (patch)
tree11549f2341c1d06579bf77fc3a920ae6e8098c82
parentcca462e37f40318bee486687e07fb489370b4ab4 (diff)
downloadppe42-gcc-a16588341fdf44635524b5be7446f9aa9d31d591.tar.gz
ppe42-gcc-a16588341fdf44635524b5be7446f9aa9d31d591.zip
2007-04-29 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31711 * trans-array.c (gfc_conv_resolve_dependencies): Create a temp whenever a dependency is found. 2007-04-29 Paul Thomas <pault@gcc.gnu.org> PR fortran/31711 * gfortran.dg/dependency_21.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124269 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-array.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/dependency_21.f9021
4 files changed, 34 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ef1d6cb6d37..6bba251dc48 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/31711
+ * trans-array.c (gfc_conv_resolve_dependencies): Create a temp
+ whenever a dependency is found.
+
2007-04-28 Tobias Schlüter <tobi@gcc.gnu.org>
* options.c (gfc_handle_option): Ensure requested free form line
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index b6a2ac02963..92fd67cccf5 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -3001,6 +3001,8 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop, gfc_ss * dest,
rref = ss->expr->ref;
nDepend = gfc_dep_resolver (lref, rref);
+ if (nDepend == 1)
+ break;
#if 0
/* TODO : loop shifting. */
if (nDepend == 1)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e3097390586..c064f174fc5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/31711
+ * gfortran.dg/dependency_21.f90: New test.
+
2007-04-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* gfortran.dg/secnds.f: Use real*8.
diff --git a/gcc/testsuite/gfortran.dg/dependency_21.f90 b/gcc/testsuite/gfortran.dg/dependency_21.f90
new file mode 100644
index 00000000000..ca25458f7f2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dependency_21.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+! Test the fix for PR31711 in which the dependency in the assignment
+! at line 18 was detected and then ignored.
+!
+! Contributed by Tobias Ivarsson <thobes@gmail.com>
+!
+program laplsolv
+ IMPLICIT NONE
+ integer, parameter :: n = 2
+ double precision,dimension(0:n+1, 0:n+1) :: T
+ integer :: i
+
+ T=0.0
+ T(0:n+1 , 0) = 1.0
+ T(0:n+1 , n+1) = 1.0
+ T(n+1 , 0:n+1) = 2.0
+
+ T(1:n,1)=(T(0:n-1,1)+T(1:n,1+1)+1d0)
+
+ if (any (T(1:n,1) .ne. 1d0 )) call abort ()
+end program laplsolv
OpenPOWER on IntegriCloud