OSDN Git Service

2005-06-28 Thomas Koenig <Thomas.Koenig@online.de>
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Jun 2005 21:57:45 +0000 (21:57 +0000)
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Jun 2005 21:57:45 +0000 (21:57 +0000)
        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
gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90
libgfortran/ChangeLog
libgfortran/generated/eoshift3_4.c
libgfortran/generated/eoshift3_8.c
libgfortran/m4/eoshift3.m4

index 1794a3b..dfed3d3 100644 (file)
@@ -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,
 2005-06-28  Joseph S. Myers  <joseph@codesourcery.com>
 
        * g++.dg/ext/fpreg1.C, gcc.target/ia64/fpreg-1.c,
index 12edc63..a607baa 100644 (file)
@@ -2,6 +2,7 @@
 program intrinsic_eoshift
    integer, dimension(3, 3) :: a
    integer, dimension(3, 3, 2) :: b
 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/))
 
    ! 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
 
    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/))
    ! 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/))
index 41a545f..f7c2d5c 100644 (file)
@@ -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
 2005-06-28  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
 
        PR libfortran/22170
index 14c38b7..4ce66a3 100644 (file)
@@ -135,7 +135,7 @@ eoshift3_4 (gfc_array_char *ret, gfc_array_char *array,
 
           hstride[n] = h->dim[n].stride;
           if (bound)
 
           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++;
           else
             bstride[n] = 0;
           n++;
index 77617b0..7e9b911 100644 (file)
@@ -135,7 +135,7 @@ eoshift3_8 (gfc_array_char *ret, gfc_array_char *array,
 
           hstride[n] = h->dim[n].stride;
           if (bound)
 
           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++;
           else
             bstride[n] = 0;
           n++;
index 5001756..24b21cd 100644 (file)
@@ -136,7 +136,7 @@ eoshift3_`'atype_kind (gfc_array_char *ret, gfc_array_char *array,
 
           hstride[n] = h->dim[n].stride;
           if (bound)
 
           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++;
           else
             bstride[n] = 0;
           n++;