]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libfortran/19106 ([4.0 only] segfault in executable for print *,sum(a,dim=2...
authorThomas Koenig <Thomas.Koenig@online.de>
Tue, 12 Apr 2005 22:57:10 +0000 (22:57 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 12 Apr 2005 22:57:10 +0000 (22:57 +0000)
2005-04-13  Thomas Koenig  <Thomas.Koenig@online.de>

        PR libfortran/19106
        * m4/iforeach.c (name`'rtype_qual`_'atype_code):  Add TODO
        that setting correct strides is a front end job.
        (`m'name`'rtype_qual`_'atype_code):  Likewise.  If mask has
        a lowest stride of 0, adjust to 1.
        * m4/ifunction.c (name`'rtype_qual`_'atype_code):  Add TODO
        that setting correct strides is a front end job.
        (`m'name`'rtype_qual`_'atype_code):  Likewise.  If mask has
        a lowest stride of 0, adjust to 1.
        * maxloc0_4_i4.c: Regenerated
        * maxloc0_4_i8.c: Regenerated
        * maxloc0_4_r4.c: Regenerated
        * maxloc0_4_r8.c: Regenerated
        * maxloc0_8_i4.c: Regenerated
        * maxloc0_8_i8.c: Regenerated
        * maxloc0_8_r4.c: Regenerated
        * maxloc0_8_r8.c: Regenerated
        * maxloc1_4_i4.c: Regenerated
        * maxloc1_4_i8.c: Regenerated
        * maxloc1_4_r4.c: Regenerated
        * maxloc1_4_r8.c: Regenerated
        * maxloc1_8_i4.c: Regenerated
        * maxloc1_8_i8.c: Regenerated
        * maxloc1_8_r4.c: Regenerated
        * maxloc1_8_r8.c: Regenerated
        * maxval_i4.c: Regenerated
        * maxval_i8.c: Regenerated
        * maxval_r4.c: Regenerated
        * maxval_r8.c: Regenerated
        * minloc0_4_i4.c: Regenerated
        * minloc0_4_i8.c: Regenerated
        * minloc0_4_r4.c: Regenerated
        * minloc0_4_r8.c: Regenerated
        * minloc0_8_i4.c: Regenerated
        * minloc0_8_i8.c: Regenerated
        * minloc0_8_r4.c: Regenerated
        * minloc0_8_r8.c: Regenerated
        * minloc1_4_i4.c: Regenerated
        * minloc1_4_i8.c: Regenerated
        * minloc1_4_r4.c: Regenerated
        * minloc1_4_r8.c: Regenerated
        * minloc1_8_i4.c: Regenerated
        * minloc1_8_i8.c: Regenerated
        * minloc1_8_r4.c: Regenerated
        * minloc1_8_r8.c: Regenerated
        * minval_i4.c: Regenerated
        * minval_i8.c: Regenerated
        * minval_r4.c: Regenerated
        * minval_r8.c: Regenerated
        * product_c4.c: Regenerated
        * product_c8.c: Regenerated
        * product_i4.c: Regenerated
        * product_i8.c: Regenerated
        * product_r4.c: Regenerated
        * product_r8.c: Regenerated
        * sum_c4.c: Regenerated
        * sum_c8.c: Regenerated
        * sum_i4.c: Regenerated
        * sum_i8.c: Regenerated
        * sum_r4.c: Regenerated
        * sum_r8.c: Regenerated

2005-04-13  Thomas Koenig  <Thomas.Koenig@online.de>

        PR libfortran/19016
        * gfortran.fortran-torture/execute/intrinsic_mmloc.f90:
        Add tests with mask generated by expression.
        * gfortran.fortran-torture/execute/intrinsic_mmval.f90:  Likewise.
        * gfortran.fortran-torture/execute/intrinsic_product.f90:  Likewise.
        * gfortran.fortran-torture/execute/intrinsic_sum.f90:  Likewise.

From-SVN: r98052

60 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc.f90
gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmval.f90
gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_product.f90
gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sum.f90
libgfortran/ChangeLog
libgfortran/generated/maxloc0_4_i4.c
libgfortran/generated/maxloc0_4_i8.c
libgfortran/generated/maxloc0_4_r4.c
libgfortran/generated/maxloc0_4_r8.c
libgfortran/generated/maxloc0_8_i4.c
libgfortran/generated/maxloc0_8_i8.c
libgfortran/generated/maxloc0_8_r4.c
libgfortran/generated/maxloc0_8_r8.c
libgfortran/generated/maxloc1_4_i4.c
libgfortran/generated/maxloc1_4_i8.c
libgfortran/generated/maxloc1_4_r4.c
libgfortran/generated/maxloc1_4_r8.c
libgfortran/generated/maxloc1_8_i4.c
libgfortran/generated/maxloc1_8_i8.c
libgfortran/generated/maxloc1_8_r4.c
libgfortran/generated/maxloc1_8_r8.c
libgfortran/generated/maxval_i4.c
libgfortran/generated/maxval_i8.c
libgfortran/generated/maxval_r4.c
libgfortran/generated/maxval_r8.c
libgfortran/generated/minloc0_4_i4.c
libgfortran/generated/minloc0_4_i8.c
libgfortran/generated/minloc0_4_r4.c
libgfortran/generated/minloc0_4_r8.c
libgfortran/generated/minloc0_8_i4.c
libgfortran/generated/minloc0_8_i8.c
libgfortran/generated/minloc0_8_r4.c
libgfortran/generated/minloc0_8_r8.c
libgfortran/generated/minloc1_4_i4.c
libgfortran/generated/minloc1_4_i8.c
libgfortran/generated/minloc1_4_r4.c
libgfortran/generated/minloc1_4_r8.c
libgfortran/generated/minloc1_8_i4.c
libgfortran/generated/minloc1_8_i8.c
libgfortran/generated/minloc1_8_r4.c
libgfortran/generated/minloc1_8_r8.c
libgfortran/generated/minval_i4.c
libgfortran/generated/minval_i8.c
libgfortran/generated/minval_r4.c
libgfortran/generated/minval_r8.c
libgfortran/generated/product_c4.c
libgfortran/generated/product_c8.c
libgfortran/generated/product_i4.c
libgfortran/generated/product_i8.c
libgfortran/generated/product_r4.c
libgfortran/generated/product_r8.c
libgfortran/generated/sum_c4.c
libgfortran/generated/sum_c8.c
libgfortran/generated/sum_i4.c
libgfortran/generated/sum_i8.c
libgfortran/generated/sum_r4.c
libgfortran/generated/sum_r8.c
libgfortran/m4/iforeach.m4
libgfortran/m4/ifunction.m4

index 3edefec3c8e565889d765415e29512a7c593be64..6c1d8c4b54533b53a7ee4d126905b7ca671ae7b9 100644 (file)
@@ -1,3 +1,12 @@
+2005-04-13  Thomas Koenig  <Thomas.Koenig@online.de>
+
+       PR libfortran/19016
+       * gfortran.fortran-torture/execute/intrinsic_mmloc.f90:
+       Add tests with mask generated by expression.
+       * gfortran.fortran-torture/execute/intrinsic_mmval.f90:  Likewise.
+       * gfortran.fortran-torture/execute/intrinsic_product.f90:  Likewise.
+       * gfortran.fortran-torture/execute/intrinsic_sum.f90:  Likewise.
+
 2005-04-12  Ulrich Weigand  <uweigand@de.ibm.com>
 
        PR middle-end/20917
index ea73913b6ef207ed97ac710b226f95780b86990c..03273e1b22c415a61bb21c8ec71cf6fe3b9d8bf5 100644 (file)
@@ -3,11 +3,12 @@ program testmmloc
    implicit none
    integer, dimension (3, 3) :: a
    integer, dimension (3) :: b
-   logical, dimension (3, 3) :: m
+   logical, dimension (3, 3) :: m, tr
    integer i
    character(len=10) line
 
    a = reshape ((/1, 2, 3, 5, 4, 6, 9, 8, 7/), (/3, 3/));
+   tr = .true.
 
    b = minloc (a, 1)
    if (b(1) .ne. 1) call abort
@@ -27,6 +28,10 @@ program testmmloc
    if (b(1) .ne. 2) call abort
    if (b(2) .ne. 2) call abort
    if (b(3) .ne. 3) call abort
+   b = minloc (a, 1, m .and. tr)
+   if (b(1) .ne. 2) call abort
+   if (b(2) .ne. 2) call abort
+   if (b(3) .ne. 3) call abort
    b = -1
    write (line, 9000) minloc(a, 1, m)
    read (line, 9000) b
@@ -47,6 +52,9 @@ program testmmloc
    b(1:2) = minloc(a, mask=m)
    if (b(1) .ne. 2) call abort
    if (b(2) .ne. 1) call abort
+   b(1:2) = minloc(a, mask=m .and. tr)
+   if (b(1) .ne. 2) call abort
+   if (b(2) .ne. 1) call abort
    b = -1
    write (line, 9000) minloc(a, mask=m)
    read (line, 9000) b
@@ -72,6 +80,10 @@ program testmmloc
    if (b(1) .ne. 3) call abort
    if (b(2) .ne. 3) call abort
    if (b(3) .ne. 2) call abort
+   b = maxloc (a, 1, m .and. tr)
+   if (b(1) .ne. 3) call abort
+   if (b(2) .ne. 3) call abort
+   if (b(3) .ne. 2) call abort
    b = -1
    write (line, 9000) maxloc(a, 1, m)
    read (line, 9000) b
@@ -91,6 +103,9 @@ program testmmloc
    b(1:2) = maxloc(a, mask=m)
    if (b(1) .ne. 2) call abort
    if (b(2) .ne. 3) call abort
+   b(1:2) = maxloc(a, mask=m .and. tr)
+   if (b(1) .ne. 2) call abort
+   if (b(2) .ne. 3) call abort
    b = -1
    write (line, 9000) maxloc(a, mask=m)
    read (line, 9000) b
index 86ec15917279c75f04e8d7a94216d2a468ca247b..cfd1a5b2d743085297d7666f9bc0f74d10974962 100644 (file)
@@ -3,12 +3,14 @@ program testmmval
    implicit none
    integer, dimension (3, 3) :: a
    integer, dimension (3) :: b
-   logical, dimension (3, 3) :: m
+   logical, dimension (3, 3) :: m, tr
    integer i
    character (len=9) line
 
    a = reshape ((/1, 2, 3, 5, 4, 6, 9, 8, 7/), (/3, 3/));
 
+   tr = .true.
+
    b = minval (a, 1)
    if (any(b .ne. (/1, 4, 7/))) call abort
    write (line, 9000) minval (a, 1)
@@ -19,6 +21,8 @@ program testmmval
    m(1, 2) = .false.
    b = minval (a, 1, m)
    if (any(b .ne. (/2, 4, 7/))) call abort
+   b = minval (a, 1, m .and. tr)
+   if (any(b .ne. (/2, 4, 7/))) call abort
    write (line, 9000) minval(a, 1, m)
    if (line .ne. '  2  4  7') call abort
 
@@ -32,6 +36,8 @@ program testmmval
    m(1, 3) = .false.
    b = maxval (a, 1, m)
    if (any(b .ne. (/3, 6, 8/))) call abort
+   b = maxval (a, 1, m .and. tr)
+   if (any(b .ne. (/3, 6, 8/))) call abort
    write (line, 9000) maxval(a, 1, m)
    if (line .ne. '  3  6  8') call abort
 
index 2892d5407cac9e649fa4cd911d6505ae2d8a5bba..6ada0a4219181d9c1c78af5a432d4ef95e772352 100644 (file)
@@ -3,13 +3,15 @@ program testproduct
    implicit none
    integer, dimension (3, 3) :: a
    integer, dimension (3) :: b
-   logical, dimension (3, 3) :: m
+   logical, dimension (3, 3) :: m, tr
    character(len=12) line
 
    a = reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/));
 
    b = product (a, 1)
 
+   tr = .true.
+
    if (any(b .ne. (/6, 120, 504/))) call abort
 
    write (line, 9000) product(a,1)
@@ -23,8 +25,11 @@ program testproduct
    m = .true.
    m(1, 1) = .false.
    m(2, 1) = .false.
+
    b = product (a, 2, m)
+   if (any(b .ne. (/28, 40, 162/))) call abort
 
+   b = product (a, 2, m .and. tr)
    if (any(b .ne. (/28, 40, 162/))) call abort
 
    write (line, 9000) product(a, 2, m)
@@ -32,6 +37,8 @@ program testproduct
 
    if (product (a, mask=m) .ne. 181440) call abort
 
+   if (product (a, mask=m .and. tr) .ne. 181440) call abort
+
    write (line, 9010) product(a, mask=m)
    if (line .ne. '181440') call abort
 
index 552f6c6d01f83903316c5f3dcc553b4d3bf26a86..879fa0320dd13e86390b2e5a62092eb3522eca78 100644 (file)
@@ -3,12 +3,14 @@ program testforall
    implicit none
    integer, dimension (3, 3) :: a
    integer, dimension (3) :: b
-   logical, dimension (3, 3) :: m
+   logical, dimension (3, 3) :: m, tr
    integer i
    character(len=9) line
 
    a = reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/));
 
+   tr = .true.
+
    if (sum(a) .ne. 45) call abort
    write (line, 9000) sum(a)
    if (line .ne. ' 45      ') call abort
@@ -24,6 +26,7 @@ program testforall
    m(2, 1) = .false.
 
    if (sum (a, mask=m) .ne. 42) call abort
+   if (sum (a, mask=m .and. tr) .ne. 42) call abort
 
    write(line, 9000) sum (a, mask=m)
    if (line .ne. ' 42      ') call abort
@@ -32,6 +35,11 @@ program testforall
    if (b(1) .ne. 11) call abort
    if (b(2) .ne. 13) call abort
    if (b(3) .ne. 18) call abort
+
+   b = sum (a, 2, m .and. tr)
+   if (b(1) .ne. 11) call abort
+   if (b(2) .ne. 13) call abort
+   if (b(3) .ne. 18) call abort
    write (line, 9000) sum (a, 2, m)
    if (line .ne. ' 11 13 18') call abort
 
index ca2120d26f5454911b1a7f339828b5236cbbee6e..327d42d6f227161ace93f821c07bed02ee93825a 100644 (file)
@@ -1,3 +1,67 @@
+2005-04-13  Thomas Koenig  <Thomas.Koenig@online.de>
+
+       PR libfortran/19106
+       * m4/iforeach.c (name`'rtype_qual`_'atype_code):  Add TODO
+       that setting correct strides is a front end job.
+       (`m'name`'rtype_qual`_'atype_code):  Likewise.  If mask has
+       a lowest stride of 0, adjust to 1.
+       * m4/ifunction.c (name`'rtype_qual`_'atype_code):  Add TODO
+       that setting correct strides is a front end job.
+       (`m'name`'rtype_qual`_'atype_code):  Likewise.  If mask has
+       a lowest stride of 0, adjust to 1.
+       * maxloc0_4_i4.c: Regenerated
+       * maxloc0_4_i8.c: Regenerated
+       * maxloc0_4_r4.c: Regenerated
+       * maxloc0_4_r8.c: Regenerated
+       * maxloc0_8_i4.c: Regenerated
+       * maxloc0_8_i8.c: Regenerated
+       * maxloc0_8_r4.c: Regenerated
+       * maxloc0_8_r8.c: Regenerated
+       * maxloc1_4_i4.c: Regenerated
+       * maxloc1_4_i8.c: Regenerated
+       * maxloc1_4_r4.c: Regenerated
+       * maxloc1_4_r8.c: Regenerated
+       * maxloc1_8_i4.c: Regenerated
+       * maxloc1_8_i8.c: Regenerated
+       * maxloc1_8_r4.c: Regenerated
+       * maxloc1_8_r8.c: Regenerated
+       * maxval_i4.c: Regenerated
+       * maxval_i8.c: Regenerated
+       * maxval_r4.c: Regenerated
+       * maxval_r8.c: Regenerated
+       * minloc0_4_i4.c: Regenerated
+       * minloc0_4_i8.c: Regenerated
+       * minloc0_4_r4.c: Regenerated
+       * minloc0_4_r8.c: Regenerated
+       * minloc0_8_i4.c: Regenerated
+       * minloc0_8_i8.c: Regenerated
+       * minloc0_8_r4.c: Regenerated
+       * minloc0_8_r8.c: Regenerated
+       * minloc1_4_i4.c: Regenerated
+       * minloc1_4_i8.c: Regenerated
+       * minloc1_4_r4.c: Regenerated
+       * minloc1_4_r8.c: Regenerated
+       * minloc1_8_i4.c: Regenerated
+       * minloc1_8_i8.c: Regenerated
+       * minloc1_8_r4.c: Regenerated
+       * minloc1_8_r8.c: Regenerated
+       * minval_i4.c: Regenerated
+       * minval_i8.c: Regenerated
+       * minval_r4.c: Regenerated
+       * minval_r8.c: Regenerated
+       * product_c4.c: Regenerated
+       * product_c8.c: Regenerated
+       * product_i4.c: Regenerated
+       * product_i8.c: Regenerated
+       * product_r4.c: Regenerated
+       * product_r8.c: Regenerated
+       * sum_c4.c: Regenerated
+       * sum_c8.c: Regenerated
+       * sum_i4.c: Regenerated
+       * sum_i8.c: Regenerated
+       * sum_r4.c: Regenerated
+       * sum_r8.c: Regenerated
+
 2005-04-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
 
        PR libfortran/20788
index a483c432234ac8a2f0a482950774c0ac1f5d515a..94e2ec554bfb5389ae3e3ec69f47db195957b1a3 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_4_i4 (gfc_array_i4 * retarray, gfc_array_i4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index ced6d6a2fe1a155fd59638d2794e5488649e4cbb..85e0ea5c73e49cb8bd4d6e27ee757519a6e9629a 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_4_i8 (gfc_array_i4 * retarray, gfc_array_i8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 06eb04c31e6c47d794d953930dabb52585c492e3..14f64e4d9bf050d19584c9cc285f1731ec1c7725 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_4_r4 (gfc_array_i4 * retarray, gfc_array_r4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 791321815bb7588ad26141b8b20fa9393c3a2608..caa3388e490fbc19f0851d515cd1bfc58b449275 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_4_r8 (gfc_array_i4 * retarray, gfc_array_r8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 49d370d73237455e86001bfc526a06b7e1928c79..6999ffab0f5e1818b2d0da1d3d693b65b7232488 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_8_i4 (gfc_array_i8 * retarray, gfc_array_i4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 100c011d96727a8d9efcd98035785b53e1c67570..614e6dfcd4f512b42babe9616415e3ae6e409c91 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_8_i8 (gfc_array_i8 * retarray, gfc_array_i8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 4cf8364d882d909959b691454511b33d48ec1a14..b9e19501572de5556617ee6e17307f34048c010f 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_8_r4 (gfc_array_i8 * retarray, gfc_array_r4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 1a0cceee555c6ef135b2ee092e98db35fb379285..b7e216b8452a4afdf77991a00acf82df91161a58 100644 (file)
@@ -195,6 +195,9 @@ mmaxloc0_8_r8 (gfc_array_i8 * retarray, gfc_array_r8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 38c6836aa3dd5bbe20cf35b4795382ba96f85acc..deeb06382e0e01dac9eb6ab6dd713921d317ee9d 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_4_i4 (gfc_array_i4 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 9c6c7320255a680215ad62a3442d8234f2738796..80555e817f829d6d9b77be89ab9130c1698a41ec 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_4_i8 (gfc_array_i4 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 4048d2bc65ac55bdf92225614965819906f28ba1..55d52291a9b9edfd89b3bfa4d7c23f87633ed94f 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_4_r4 (gfc_array_i4 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index f27a1df413745681a6bf703c36dadd4e040eb50f..aab24a16834013b2e370a08251a4ff8399f44012 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_4_r8 (gfc_array_i4 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 448c9f9bd16d5269bfcec7259a2dda3801c9b4bd..807be639840e6ec9f894a0c4c38d15032b658cd6 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_8_i4 (gfc_array_i8 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index fb91a6a05ce49f80a3d1833f9748b84b75ac836d..e86cd089031ace7104ac9721a97e3ce27e79ce03 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_8_i8 (gfc_array_i8 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 33159fb28b39e35fb9e5459951e0fd44f3c22bf9..584bfb4a61160b8df1debe76844422d16f92335f 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_8_r4 (gfc_array_i8 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index b1f780567daabd326fef3a995841b82985ec122d..60c8c3d3ce6237d47385e75c174076128902a27c 100644 (file)
@@ -200,6 +200,9 @@ mmaxloc1_8_r8 (gfc_array_i8 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index e992327dd22637a5e646e8efb0398af9eaed3392..0bf088f044ec002158c9c94a500aa1226e62ca19 100644 (file)
@@ -194,6 +194,9 @@ mmaxval_i4 (gfc_array_i4 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 3e60377155382e89cb7a26bbf1f55098c7269edb..2acdef9b09e0d9c5a8ea12e0ec00e984a0a0ba73 100644 (file)
@@ -194,6 +194,9 @@ mmaxval_i8 (gfc_array_i8 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 8e94efbfe91bd98b3db18af3794aa5cc748642f8..46948b960907676f9a7d48f8f95abf953d54a15a 100644 (file)
@@ -194,6 +194,9 @@ mmaxval_r4 (gfc_array_r4 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 40a3575a793aeddbf7ee6283c02b4d384023d783..b7bb89ce42c0c1db37440abe87b58cdec24b4df0 100644 (file)
@@ -194,6 +194,9 @@ mmaxval_r8 (gfc_array_r8 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 178bf5af5dfd52cb5d72cbf931aa2e48d54119d6..4bb7a5a058d2e23d7dce064366667f1055ef2103 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_4_i4 (gfc_array_i4 * retarray, gfc_array_i4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
@@ -238,7 +241,7 @@ mminloc0_4_i4 (gfc_array_i4 * retarray, gfc_array_i4 *array,
     {
       {
         /* Implementation start.  */
-
+  printf("mbase = %p, *mbase = %d, *base=%d\n");
   if (*mbase && *base < minval)
     {
       minval = *base;
index d87a444c96cb438587192dcccf594194567d3573..9d7a1a4c599e4b6c5ee4586a7db92b9f9eeeb31d 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_4_i8 (gfc_array_i4 * retarray, gfc_array_i8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 21c9edf451e24b2112cd428eb0179af0ff537902..3b54a3ba35aa252a82ea8d4ca3d70c3bfbf3f93d 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_4_r4 (gfc_array_i4 * retarray, gfc_array_r4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index a00d0135e872b68551789fb58dac4af3c21c3b58..9866538a54cf37e9db42d76b626cb5d648c013b3 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_4_r8 (gfc_array_i4 * retarray, gfc_array_r8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 340c54d8aee91f8c7114657ef5f7d6774372e750..4440a9b5306bd75876fdc5a205982d335308ccc5 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_8_i4 (gfc_array_i8 * retarray, gfc_array_i4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 5941eb4c4b18b921ac5a007cda0b2873d128b558..f2ee93ca5441f31e51444c90f5da820db8ecbdb6 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_8_i8 (gfc_array_i8 * retarray, gfc_array_i8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 9900bc98ed5c83a901a8297becd9b2d2a358c837..1f38c912aa66044980849b3ddb154fa0f418eb0b 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_8_r4 (gfc_array_i8 * retarray, gfc_array_r4 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index d1caf2a181c434715529f8ddacd2536952f6978c..773ab48ee29e336033ddea884b66bdd4b8b08596 100644 (file)
@@ -195,6 +195,9 @@ mminloc0_8_r8 (gfc_array_i8 * retarray, gfc_array_r8 *array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index 76f082ba61321306879b538af576b17ec3efcd85..8c99d8391b2a5595dac5b1037e644b06c5059f73 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_4_i4 (gfc_array_i4 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 358b4fa88b431d05fee4feb29a09537dc1dd643f..48596a61001384eafebb1e99f69b905c9f905872 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_4_i8 (gfc_array_i4 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index b61e6b5bb0f944e47181d1a0f2ee57453152e300..0b9d15c1fa8d76d71d4471ee6446b46d56abeb68 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_4_r4 (gfc_array_i4 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 65c1fac6e2885bbf82d9424392ffde2e90311b38..25d366a94394fed8fd98744375a64e1b9086b1b6 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_4_r8 (gfc_array_i4 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index a428c919c6c7a22413989bfdff136074d077c70f..a57efe6ffc765d48e9ba9e3a2df86883c59e0a7f 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_8_i4 (gfc_array_i8 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index fd7f8d6147f7b5a1729fd470bdb874751d768ae1..5e1603a3a1b31856e449c527f0abfc9795d189ea 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_8_i8 (gfc_array_i8 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 0f15fc44c8189b5ff3db05abfa015d7efa356f79..643765a48813f56e93ae93fc3974f7bcc84f9fcd 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_8_r4 (gfc_array_i8 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index edd9a7191e69e5f55c1983334219d83a9c353bc1..7d2dc4175a6260f4ebc1d75e34418acfe7dcc5a5 100644 (file)
@@ -200,6 +200,9 @@ mminloc1_8_r8 (gfc_array_i8 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 69330111b9ad46bc1b048a1be52b34715dc14753..d0a8a5ea4ad77b7fc55b7af0d32e47f36efadaf8 100644 (file)
@@ -194,6 +194,9 @@ mminval_i4 (gfc_array_i4 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 579e5f971813a043d3b338685cc18f1881887472..9d44514c4c618c8cdce8f30566f2f3afd3670786 100644 (file)
@@ -194,6 +194,9 @@ mminval_i8 (gfc_array_i8 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index d936e2c871ed22a099dfe01e59bef2fa0348bd7f..4220d8755ebd5b2ea8a85acf32c28990f35c2f47 100644 (file)
@@ -194,6 +194,9 @@ mminval_r4 (gfc_array_r4 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index a85e29efae26a9e78a9b97c5eb390c70398f4411..d6c5b000eea1fe454ec82e1e2d3bdfe3dbdddb30 100644 (file)
@@ -194,6 +194,9 @@ mminval_r8 (gfc_array_r8 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 29604708812e64e90ff299591f1be4caa212b78f..d20ad9b8440afe31bbc1149bb71600f96cf42418 100644 (file)
@@ -192,6 +192,9 @@ mproduct_c4 (gfc_array_c4 * retarray, gfc_array_c4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index fc3eccb11107f8ff31568dd483bc9c9c42944784..706e9737de8f26a7b9550c59f37ecf0a4fcad64d 100644 (file)
@@ -192,6 +192,9 @@ mproduct_c8 (gfc_array_c8 * retarray, gfc_array_c8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index d349b66b1186bd4033c1c2d6f4932b6d6676553d..f8f86d6ca82dbd0ddb6615649aafc3fd935e2a08 100644 (file)
@@ -192,6 +192,9 @@ mproduct_i4 (gfc_array_i4 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 1fe07458e0bab5d72e1974f1ba01d1a0f3974462..00ae28bd1bf6c1cc75a993153f121bf94d9fa518 100644 (file)
@@ -192,6 +192,9 @@ mproduct_i8 (gfc_array_i8 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 592210d7705e9202d7a667890498f597588a4779..ea377bbdcbbdd06b0fa569df6e4de2e452ceb695 100644 (file)
@@ -192,6 +192,9 @@ mproduct_r4 (gfc_array_r4 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 922bcbe834e7c4708b1c979b0a0ab33c3804296d..58d22cfb5bea079a8899a22439df58c69ba1e37f 100644 (file)
@@ -192,6 +192,9 @@ mproduct_r8 (gfc_array_r8 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 74efd07c65baca8e4e14d45f07a194f09d69b927..d9b36d8201f979e9bc22fb597540f038730eb37a 100644 (file)
@@ -192,6 +192,9 @@ msum_c4 (gfc_array_c4 * retarray, gfc_array_c4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 7d688104d55e938e2e72df9d064af67e5ae22856..a5c44cdcf0380fbcca1a12dcef4a2dac52f674e7 100644 (file)
@@ -192,6 +192,9 @@ msum_c8 (gfc_array_c8 * retarray, gfc_array_c8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 01b41126746dd8e5874d122330617a00c7ff0207..b10798f847c00a5c0f77e4144954ab8a868cf237 100644 (file)
@@ -192,6 +192,9 @@ msum_i4 (gfc_array_i4 * retarray, gfc_array_i4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index df882c8137ee357f4703cf694785511aec060782..0d3e1913ac440d7148e59fe40af47607d95c2561 100644 (file)
@@ -192,6 +192,9 @@ msum_i8 (gfc_array_i8 * retarray, gfc_array_i8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index d88384dc9081904c263ea8bdf8aa47093b7a13bc..c0a81d5cb0a19d2b4c27c605e3936f3ee024d784 100644 (file)
@@ -192,6 +192,9 @@ msum_r4 (gfc_array_r4 * retarray, gfc_array_r4 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 6658de723972b1dfddd129442ad8b873016dedc4..190cabbc22d8e33c6ecbb10106154a26aeb8cb3e 100644 (file)
@@ -192,6 +192,9 @@ msum_r8 (gfc_array_r8 * retarray, gfc_array_r8 * array,
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;
index 616caf94621c1767f9f354f01390cdedc789c4e8..39af3afef0936825ed6d9c7ca7cc2ad4a9cd9847 100644 (file)
@@ -43,6 +43,9 @@ name`'rtype_qual`_'atype_code (rtype * retarray, atype *array)
       if (retarray->dim[0].stride == 0)
        retarray->dim[0].stride = 1;
     }
+
+  /* TODO:  It should be a front end job to correctly set the strides.  */
+
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
@@ -151,9 +154,14 @@ void
        retarray->dim[0].stride = 1;
     }
 
+  /* TODO:  It should be a front end job to correctly set the strides.  */
+
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   dstride = retarray->dim[0].stride;
   dest = retarray->data;
   for (n = 0; n < rank; n++)
index b377677a5ebcad3dd61929aff3d730028a5a8589..82a74ef80b44040c5985d703f9e1ef9ce68da1a6 100644 (file)
@@ -40,6 +40,9 @@ name`'rtype_qual`_'atype_code (rtype *retarray, atype *array, index_type *pdim)
   /* Make dim zero based to avoid confusion.  */
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
+
+  /* TODO:  It should be a front end job to correctly set the strides.  */
+
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
@@ -174,9 +177,15 @@ void
 
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
+
+  /* TODO:  It should be a front end job to correctly set the strides.  */
+
   if (array->dim[0].stride == 0)
     array->dim[0].stride = 1;
 
+  if (mask->dim[0].stride == 0)
+    mask->dim[0].stride = 1;
+
   len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
   if (len <= 0)
     return;