diff options
author | Paul Brook <paul@codesourcery.com> | 2005-09-16 03:26:37 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2005-09-16 03:26:37 +0000 |
commit | 07af06f6a312afcedcf9ff51f77cf9daf43bc6fe (patch) | |
tree | df33b075c1a92e4ff5194491437569188263529b /gcc | |
parent | 3489ea0cb1ee05d7c65b5178cc9f382c1578f254 (diff) | |
download | gcc-07af06f6a312afcedcf9ff51f77cf9daf43bc6fe.zip gcc-07af06f6a312afcedcf9ff51f77cf9daf43bc6fe.tar.gz gcc-07af06f6a312afcedcf9ff51f77cf9daf43bc6fe.tar.bz2 |
re PR fortran/23906 (inappropriate branch condition in function "transform_sections" in "dependency.c")
2005-09-16 Paul Brook <paul@codesourcery.com>
PR fortran/23906
fortran/
* dependency.c (transform_sections): Divide by correct value.
Elaborate comment.
testsuite/
* gfortran.dg/dependency_1.f90: New test.
From-SVN: r104339
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/dependency.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/dependency_1.f90 | 11 |
4 files changed, 24 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index db3d063..fc3cfe3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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 diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index 9c6b4f6..b93808a 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e9b96a9..c0a3744 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..5a5a898 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_1.f90 @@ -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 + |