mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 00:21:03 +08:00
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
This commit is contained in:
parent
096759ebec
commit
da89fba81f
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
27
gcc/testsuite/gfortran.dg/pr15957.f90
Normal file
27
gcc/testsuite/gfortran.dg/pr15957.f90
Normal file
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user