diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-09-20 19:22:50 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-09-20 19:22:50 +0200 |
commit | da89fba81fb25d870e75ebf454862752a8562f4c (patch) | |
tree | b01883a01b50c99cbeb0c9385383b50a6bc2e162 /gcc | |
parent | 096759ebeca0c3c30de5d37bd53da80020eff2af (diff) | |
download | gcc-da89fba81fb25d870e75ebf454862752a8562f4c.zip gcc-da89fba81fb25d870e75ebf454862752a8562f4c.tar.gz gcc-da89fba81fb25d870e75ebf454862752a8562f4c.tar.bz2 |
re PR fortran/15957 (Error in array assignments; 'shape'-related stuff)
fortran/
PR fortran/15957
* simplify.c (gfc_simplify_reshape): Set shape of return value
correctly.
testsuite/
PR fortran/15957
* gfortran.dg/pr15957.f90: New test.
From-SVN: r87764
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/simplify.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr15957.f90 | 27 |
4 files changed, 39 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9053f36..39f739c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2004-09-20 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/15957 + * simplify.c (gfc_simplify_reshape): Set shape of return value + correctly. + 2004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com> Zack Weinberg <zack@codesourcery.com> diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 61ef50b..a599f89 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -2822,7 +2822,7 @@ inc: e->shape = gfc_get_shape (rank); for (i = 0; i < rank; i++) - mpz_init_set_ui (e->shape[i], shape[order[i]]); + mpz_init_set_ui (e->shape[i], shape[i]); e->ts = head->expr->ts; e->rank = rank; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3414502..fe487a1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-09-20 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/15957 + * gfortran.dg/pr15957.f90: New test. + 2004-09-20 Dorit Naishlos <dorit@il.ibm.com> * gcc.dg/vect/vect-74.c: Avoid floating point precision error diff --git a/gcc/testsuite/gfortran.dg/pr15957.f90 b/gcc/testsuite/gfortran.dg/pr15957.f90 new file mode 100644 index 0000000..b143913 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr15957.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! PR 15957 +! we used to return the wrong shape when the order parameter was used +! in reshape. +! +INTEGER, parameter :: i(2,3) = reshape ((/1,2,3,4,5,6/), (/2,3/)), & + j(2,4) = reshape ((/1,2,3,4,5,6/), (/2,4/), (/0,0/), (/2,1/)) + +integer :: k(2,3), m(2,4), n(2,3), o(2,4) + +k(1,:) = (/ 1, 3, 5 /) +k(2,:) = (/ 2, 4, 6 /) + +m(1,:) = (/ 1, 2, 3, 4 /) +m(2,:) = (/ 5, 6, 0, 0 /) + +! check that reshape does the right thing while constant folding +if (any(i /= k)) call abort() +if (any(j /= m)) call abort() + +! check that reshape does the right thing at runtime +n = reshape ((/1,2,3,4,5,6/), (/2,3/)) +if (any(n /= k)) call abort() +o = reshape ((/1,2,3,4,5,6/), (/2,4/), (/0,0/), (/2,1/)) +if (any(o /= m)) call abort() +end + |