From 6e9be7d90489c7d72dea6fbd07a5873dfa4e263d Mon Sep 17 00:00:00 2001 From: tkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 28 Jun 2005 21:57:45 +0000 Subject: [PATCH] 2005-06-28 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/22142 * m4/eoshift3.m4: Correct bstride (it needs to be multiplied by size since it's a char pointer). * m4/eoshift3_4.c: Regenerated. * m4/eoshift3_8.c: Regenerated. 2005-06-28 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/22142 * gfortran.fortran-torture/execute/intrinsic_eoshift.f90: Add testcase for PR 22142. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101392 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++++ .../execute/intrinsic_eoshift.f90 | 8 ++++++++ libgfortran/ChangeLog | 8 ++++++++ libgfortran/generated/eoshift3_4.c | 2 +- libgfortran/generated/eoshift3_8.c | 2 +- libgfortran/m4/eoshift3.m4 | 2 +- 6 files changed, 25 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1794a3bd2688..dfed3d3beb73 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-06-28 Thomas Koenig <Thomas.Koenig@online.de> + + PR libfortran/22142 + * gfortran.fortran-torture/execute/intrinsic_eoshift.f90: + Add testcase for PR 22142. + 2005-06-28 Joseph S. Myers <joseph@codesourcery.com> * g++.dg/ext/fpreg1.C, gcc.target/ia64/fpreg-1.c, diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90 index 12edc630e50b..a607baa5ba5e 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90 @@ -2,6 +2,7 @@ program intrinsic_eoshift integer, dimension(3, 3) :: a integer, dimension(3, 3, 2) :: b + integer, dimension(3) :: bo, sh ! Scalar shift and scalar bound. a = reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/)) @@ -47,6 +48,13 @@ program intrinsic_eoshift if (any (a .ne. reshape ((/7, -1, 3, 99, -1, 6, 99, 2, 9/), (/3, 3/)))) & call abort + a = reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/)) + sh = (/ 3, -1, -3 /) + bo = (/-999, -99, -9 /) + a = eoshift(a, shift=sh, boundary=bo) + if (any (a .ne. reshape ((/ -999, -999, -999, -99, 4, 5, -9, -9, -9 /), & + shape(a)))) call abort + ! Test arrays > rank 2 b(:, :, 1) = reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/)) b(:, :, 2) = 10 + reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/)) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 41a545f1df3d..f7c2d5c3617a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2005-06-28 Thomas Koenig <Thomas.Koenig@online.de> + + PR libfortran/22142 + * m4/eoshift3.m4: Correct bstride (it needs to be multiplied + by size since it's a char pointer). + * m4/eoshift3_4.c: Regenerated. + * m4/eoshift3_8.c: Regenerated. + 2005-06-28 Francois-Xavier Coudert <coudert@clipper.ens.fr> PR libfortran/22170 diff --git a/libgfortran/generated/eoshift3_4.c b/libgfortran/generated/eoshift3_4.c index 14c38b7bd6ae..4ce66a3059ad 100644 --- a/libgfortran/generated/eoshift3_4.c +++ b/libgfortran/generated/eoshift3_4.c @@ -135,7 +135,7 @@ eoshift3_4 (gfc_array_char *ret, gfc_array_char *array, hstride[n] = h->dim[n].stride; if (bound) - bstride[n] = bound->dim[n].stride; + bstride[n] = bound->dim[n].stride * size; else bstride[n] = 0; n++; diff --git a/libgfortran/generated/eoshift3_8.c b/libgfortran/generated/eoshift3_8.c index 77617b074172..7e9b911b1a6b 100644 --- a/libgfortran/generated/eoshift3_8.c +++ b/libgfortran/generated/eoshift3_8.c @@ -135,7 +135,7 @@ eoshift3_8 (gfc_array_char *ret, gfc_array_char *array, hstride[n] = h->dim[n].stride; if (bound) - bstride[n] = bound->dim[n].stride; + bstride[n] = bound->dim[n].stride * size; else bstride[n] = 0; n++; diff --git a/libgfortran/m4/eoshift3.m4 b/libgfortran/m4/eoshift3.m4 index 5001756df0cf..24b21cd1531c 100644 --- a/libgfortran/m4/eoshift3.m4 +++ b/libgfortran/m4/eoshift3.m4 @@ -136,7 +136,7 @@ eoshift3_`'atype_kind (gfc_array_char *ret, gfc_array_char *array, hstride[n] = h->dim[n].stride; if (bound) - bstride[n] = bound->dim[n].stride; + bstride[n] = bound->dim[n].stride * size; else bstride[n] = 0; n++; -- GitLab