OSDN Git Service

2005-09-16 Paul Brook <paul@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Sep 2005 03:26:37 +0000 (03:26 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Sep 2005 03:26:37 +0000 (03:26 +0000)
PR fortran/23906
fortran/
* dependency.c (transform_sections): Divide by correct value.
Elaborate comment.
testsuite/
* gfortran.dg/dependency_1.f90: New test.

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

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

index db3d063..fc3cfe3 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-16  Paul Brook  <paul@codesourcery.com>
+
+       PR fortran/23906
+       * dependency.c (transform_sections): Divide by correct value.
+       Elaborate comment.
+
 2005-09-14  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/21875 Internal Unit Array I/O, NIST
index 9c6b4f6..b93808a 100644 (file)
@@ -392,7 +392,7 @@ get_deps (mpz_t x1, mpz_t x2, mpz_t y)
 }
 
 
-/* Transforms a sections l and r such that 
+/* Perform the same linear transformation on sections l and r such that 
    (l_start:l_end:l_stride) -> (0:no_of_elements)
    (r_start:r_end:r_stride) -> (X1:X2)
    Where r_end is implicit as both sections must have the same number of
@@ -434,7 +434,7 @@ transform_sections (mpz_t X1, mpz_t X2, mpz_t no_of_elements,
     mpz_mul (X2, no_of_elements, r_stride->value.integer);
 
   if (l_stride != NULL)
-    mpz_cdiv_q (X2, X2, r_stride->value.integer);
+    mpz_cdiv_q (X2, X2, l_stride->value.integer);
   mpz_add (X2, X2, X1);
 
   return 0;
index e9b96a9..c0a3744 100644 (file)
@@ -1,3 +1,8 @@
+2005-09-16  Paul Brook  <paul@codesourcery.com>
+
+       PR fortran/23906
+       * gfortran.dg/dependency_1.f90: New test.
+
 2005-09-15  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/23896
diff --git a/gcc/testsuite/gfortran.dg/dependency_1.f90 b/gcc/testsuite/gfortran.dg/dependency_1.f90
new file mode 100644 (file)
index 0000000..5a5a898
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! PR23906
+! Dependency analysis was using the stride from the wrong expression and
+! segfaulting
+subroutine foo(a)
+  real, dimension(:) :: a
+
+  a(1:3:2) = a(1:2) 
+  a(1:2) = a(1:3:2) 
+end subroutine
+