| Index: gcc/libgfortran/m4/unpack.m4
|
| diff --git a/gcc/libgfortran/m4/unpack.m4 b/gcc/libgfortran/m4/unpack.m4
|
| index a26128c7835eb0ad7738d4ddc211299a87887076..bf348aebe1fa22b65743a2fccb65c03e5274c810 100644
|
| --- a/gcc/libgfortran/m4/unpack.m4
|
| +++ b/gcc/libgfortran/m4/unpack.m4
|
| @@ -91,13 +91,12 @@ unpack0_'rtype_code` ('rtype` *ret, const 'rtype` *vector,
|
| for (n = 0; n < dim; n++)
|
| {
|
| count[n] = 0;
|
| - ret->dim[n].stride = rs;
|
| - ret->dim[n].lbound = 0;
|
| - ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
|
| - extent[n] = ret->dim[n].ubound + 1;
|
| + GFC_DIMENSION_SET(ret->dim[n], 0,
|
| + GFC_DESCRIPTOR_EXTENT(mask,n) - 1, rs);
|
| + extent[n] = GFC_DESCRIPTOR_EXTENT(ret,n);
|
| empty = empty || extent[n] <= 0;
|
| - rstride[n] = ret->dim[n].stride;
|
| - mstride[n] = mask->dim[n].stride * mask_kind;
|
| + rstride[n] = GFC_DESCRIPTOR_STRIDE(ret,n);
|
| + mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
|
| rs *= extent[n];
|
| }
|
| ret->offset = 0;
|
| @@ -109,10 +108,10 @@ unpack0_'rtype_code` ('rtype` *ret, const 'rtype` *vector,
|
| for (n = 0; n < dim; n++)
|
| {
|
| count[n] = 0;
|
| - extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
|
| + extent[n] = GFC_DESCRIPTOR_EXTENT(ret,n);
|
| empty = empty || extent[n] <= 0;
|
| - rstride[n] = ret->dim[n].stride;
|
| - mstride[n] = mask->dim[n].stride * mask_kind;
|
| + rstride[n] = GFC_DESCRIPTOR_STRIDE(ret,n);
|
| + mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
|
| }
|
| if (rstride[0] == 0)
|
| rstride[0] = 1;
|
| @@ -124,7 +123,7 @@ unpack0_'rtype_code` ('rtype` *ret, const 'rtype` *vector,
|
| if (mstride[0] == 0)
|
| mstride[0] = 1;
|
|
|
| - vstride0 = vector->dim[0].stride;
|
| + vstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
|
| if (vstride0 == 0)
|
| vstride0 = 1;
|
| rstride0 = rstride[0];
|
| @@ -236,14 +235,13 @@ unpack1_'rtype_code` ('rtype` *ret, const 'rtype` *vector,
|
| for (n = 0; n < dim; n++)
|
| {
|
| count[n] = 0;
|
| - ret->dim[n].stride = rs;
|
| - ret->dim[n].lbound = 0;
|
| - ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
|
| - extent[n] = ret->dim[n].ubound + 1;
|
| + GFC_DIMENSION_SET(ret->dim[n], 0,
|
| + GFC_DESCRIPTOR_EXTENT(mask,n) - 1, rs);
|
| + extent[n] = GFC_DESCRIPTOR_EXTENT(ret,n);
|
| empty = empty || extent[n] <= 0;
|
| - rstride[n] = ret->dim[n].stride;
|
| - fstride[n] = field->dim[n].stride;
|
| - mstride[n] = mask->dim[n].stride * mask_kind;
|
| + rstride[n] = GFC_DESCRIPTOR_STRIDE(ret,n);
|
| + fstride[n] = GFC_DESCRIPTOR_STRIDE(field,n);
|
| + mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
|
| rs *= extent[n];
|
| }
|
| ret->offset = 0;
|
| @@ -255,11 +253,11 @@ unpack1_'rtype_code` ('rtype` *ret, const 'rtype` *vector,
|
| for (n = 0; n < dim; n++)
|
| {
|
| count[n] = 0;
|
| - extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
|
| + extent[n] = GFC_DESCRIPTOR_EXTENT(ret,n);
|
| empty = empty || extent[n] <= 0;
|
| - rstride[n] = ret->dim[n].stride;
|
| - fstride[n] = field->dim[n].stride;
|
| - mstride[n] = mask->dim[n].stride * mask_kind;
|
| + rstride[n] = GFC_DESCRIPTOR_STRIDE(ret,n);
|
| + fstride[n] = GFC_DESCRIPTOR_STRIDE(field,n);
|
| + mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
|
| }
|
| if (rstride[0] == 0)
|
| rstride[0] = 1;
|
| @@ -273,7 +271,7 @@ unpack1_'rtype_code` ('rtype` *ret, const 'rtype` *vector,
|
| if (mstride[0] == 0)
|
| mstride[0] = 1;
|
|
|
| - vstride0 = vector->dim[0].stride;
|
| + vstride0 = GFC_DESCRIPTOR_STRIDE(vector,0);
|
| if (vstride0 == 0)
|
| vstride0 = 1;
|
| rstride0 = rstride[0];
|
|
|