aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/m4
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2018-01-07 14:11:11 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2018-01-07 14:11:11 +0000
commitfa3c4d47b961d8be02e62345d2122b93ad077207 (patch)
treec217845d59bc9d2c14317ac18bd3fe3a06f9f42e /libgfortran/m4
parentea99ec5bd62c0d14023aac0316f4286193db9434 (diff)
libgfortran.h (GFC_DTYPE_COPY): New macro.
2018-01-07 Thomas Koenig <tkoenig@gcc.gnu.org> * libgfortran.h (GFC_DTYPE_COPY): New macro. (GFC_DTYPE_COPY_SETRANK): New macro. (GFC_DTYPE_IS_UNSET): New macro. * intrinsics/cshift0.c (cshift0): Use new macros. * intrinsics/eoshift0.c (eoshift0): Likewise. * intrinsics/eoshift2.c (eoshift2): Likewise. * intrinsics/move_alloc.c (move_alloc): Likewise. * intrinsics/reshape_generic.c (reshape_internal): Likewise. * intrinsics/spread_generic.c (spread_internal): Likewise. * intrinsics/spread_generic.c (spread_scalar): Likewise. * intrinsics/spread_generic.c (spread_char_scalar): Likewise. * intrinsics/spread_generic.c (spread_char4_scalar): Likewise. * intrinsics/unpack_generic.c (unpack0): Likewise. * intrinsics/unpack_generic.c (unpack0_char): Likewise. * intrinsics/unpack_generic.c (unpack0_char4): Likewise. * m4/cshift1.m4 (cshift1): Likewise. * m4/eoshift1.m4 (eoshift1): Likewise. * m4/eoshift3.m4 (eoshift3): Likewise. * m4/iforeach-s.m4: Likewise. * m4/iforeach.m4: Likewise. * m4/ifunction-s.m4: Likewise. * m4/ifunction-s2.m4: Likewise. * m4/ifunction.m4: Likewise. * m4/ifunction_logical.m4: Likewise. * m4/reshape.m4: Likewise. * m4/spread.m4: Likewise. * generated/all_l1.c : Regenerated. * generated/all_l16.c : Regenerated. * generated/all_l2.c : Regenerated. * generated/all_l4.c : Regenerated. * generated/all_l8.c : Regenerated. * generated/any_l1.c : Regenerated. * generated/any_l16.c : Regenerated. * generated/any_l2.c : Regenerated. * generated/any_l4.c : Regenerated. * generated/any_l8.c : Regenerated. * generated/count_16_l.c : Regenerated. * generated/count_1_l.c : Regenerated. * generated/count_2_l.c : Regenerated. * generated/count_4_l.c : Regenerated. * generated/count_8_l.c : Regenerated. * generated/cshift1_16.c : Regenerated. * generated/cshift1_4.c : Regenerated. * generated/cshift1_8.c : Regenerated. * generated/eoshift1_16.c : Regenerated. * generated/eoshift1_4.c : Regenerated. * generated/eoshift1_8.c : Regenerated. * generated/eoshift3_16.c : Regenerated. * generated/eoshift3_4.c : Regenerated. * generated/eoshift3_8.c : Regenerated. * generated/iall_i1.c : Regenerated. * generated/iall_i16.c : Regenerated. * generated/iall_i2.c : Regenerated. * generated/iall_i4.c : Regenerated. * generated/iall_i8.c : Regenerated. * generated/iany_i1.c : Regenerated. * generated/iany_i16.c : Regenerated. * generated/iany_i2.c : Regenerated. * generated/iany_i4.c : Regenerated. * generated/iany_i8.c : Regenerated. * generated/iparity_i1.c : Regenerated. * generated/iparity_i16.c : Regenerated. * generated/iparity_i2.c : Regenerated. * generated/iparity_i4.c : Regenerated. * generated/iparity_i8.c : Regenerated. * generated/maxloc0_16_i1.c : Regenerated. * generated/maxloc0_16_i16.c : Regenerated. * generated/maxloc0_16_i2.c : Regenerated. * generated/maxloc0_16_i4.c : Regenerated. * generated/maxloc0_16_i8.c : Regenerated. * generated/maxloc0_16_r10.c : Regenerated. * generated/maxloc0_16_r16.c : Regenerated. * generated/maxloc0_16_r4.c : Regenerated. * generated/maxloc0_16_r8.c : Regenerated. * generated/maxloc0_16_s1.c : Regenerated. * generated/maxloc0_16_s4.c : Regenerated. * generated/maxloc0_4_i1.c : Regenerated. * generated/maxloc0_4_i16.c : Regenerated. * generated/maxloc0_4_i2.c : Regenerated. * generated/maxloc0_4_i4.c : Regenerated. * generated/maxloc0_4_i8.c : Regenerated. * generated/maxloc0_4_r10.c : Regenerated. * generated/maxloc0_4_r16.c : Regenerated. * generated/maxloc0_4_r4.c : Regenerated. * generated/maxloc0_4_r8.c : Regenerated. * generated/maxloc0_4_s1.c : Regenerated. * generated/maxloc0_4_s4.c : Regenerated. * generated/maxloc0_8_i1.c : Regenerated. * generated/maxloc0_8_i16.c : Regenerated. * generated/maxloc0_8_i2.c : Regenerated. * generated/maxloc0_8_i4.c : Regenerated. * generated/maxloc0_8_i8.c : Regenerated. * generated/maxloc0_8_r10.c : Regenerated. * generated/maxloc0_8_r16.c : Regenerated. * generated/maxloc0_8_r4.c : Regenerated. * generated/maxloc0_8_r8.c : Regenerated. * generated/maxloc0_8_s1.c : Regenerated. * generated/maxloc0_8_s4.c : Regenerated. * generated/maxloc1_16_i1.c : Regenerated. * generated/maxloc1_16_i16.c : Regenerated. * generated/maxloc1_16_i2.c : Regenerated. * generated/maxloc1_16_i4.c : Regenerated. * generated/maxloc1_16_i8.c : Regenerated. * generated/maxloc1_16_r10.c : Regenerated. * generated/maxloc1_16_r16.c : Regenerated. * generated/maxloc1_16_r4.c : Regenerated. * generated/maxloc1_16_r8.c : Regenerated. * generated/maxloc1_16_s1.c : Regenerated. * generated/maxloc1_16_s4.c : Regenerated. * generated/maxloc1_4_i1.c : Regenerated. * generated/maxloc1_4_i16.c : Regenerated. * generated/maxloc1_4_i2.c : Regenerated. * generated/maxloc1_4_i4.c : Regenerated. * generated/maxloc1_4_i8.c : Regenerated. * generated/maxloc1_4_r10.c : Regenerated. * generated/maxloc1_4_r16.c : Regenerated. * generated/maxloc1_4_r4.c : Regenerated. * generated/maxloc1_4_r8.c : Regenerated. * generated/maxloc1_4_s1.c : Regenerated. * generated/maxloc1_4_s4.c : Regenerated. * generated/maxloc1_8_i1.c : Regenerated. * generated/maxloc1_8_i16.c : Regenerated. * generated/maxloc1_8_i2.c : Regenerated. * generated/maxloc1_8_i4.c : Regenerated. * generated/maxloc1_8_i8.c : Regenerated. * generated/maxloc1_8_r10.c : Regenerated. * generated/maxloc1_8_r16.c : Regenerated. * generated/maxloc1_8_r4.c : Regenerated. * generated/maxloc1_8_r8.c : Regenerated. * generated/maxloc1_8_s1.c : Regenerated. * generated/maxloc1_8_s4.c : Regenerated. * generated/maxval1_s1.c : Regenerated. * generated/maxval1_s4.c : Regenerated. * generated/maxval_i1.c : Regenerated. * generated/maxval_i16.c : Regenerated. * generated/maxval_i2.c : Regenerated. * generated/maxval_i4.c : Regenerated. * generated/maxval_i8.c : Regenerated. * generated/maxval_r10.c : Regenerated. * generated/maxval_r16.c : Regenerated. * generated/maxval_r4.c : Regenerated. * generated/maxval_r8.c : Regenerated. * generated/minloc0_16_i1.c : Regenerated. * generated/minloc0_16_i16.c : Regenerated. * generated/minloc0_16_i2.c : Regenerated. * generated/minloc0_16_i4.c : Regenerated. * generated/minloc0_16_i8.c : Regenerated. * generated/minloc0_16_r10.c : Regenerated. * generated/minloc0_16_r16.c : Regenerated. * generated/minloc0_16_r4.c : Regenerated. * generated/minloc0_16_r8.c : Regenerated. * generated/minloc0_16_s1.c : Regenerated. * generated/minloc0_16_s4.c : Regenerated. * generated/minloc0_4_i1.c : Regenerated. * generated/minloc0_4_i16.c : Regenerated. * generated/minloc0_4_i2.c : Regenerated. * generated/minloc0_4_i4.c : Regenerated. * generated/minloc0_4_i8.c : Regenerated. * generated/minloc0_4_r10.c : Regenerated. * generated/minloc0_4_r16.c : Regenerated. * generated/minloc0_4_r4.c : Regenerated. * generated/minloc0_4_r8.c : Regenerated. * generated/minloc0_4_s1.c : Regenerated. * generated/minloc0_4_s4.c : Regenerated. * generated/minloc0_8_i1.c : Regenerated. * generated/minloc0_8_i16.c : Regenerated. * generated/minloc0_8_i2.c : Regenerated. * generated/minloc0_8_i4.c : Regenerated. * generated/minloc0_8_i8.c : Regenerated. * generated/minloc0_8_r10.c : Regenerated. * generated/minloc0_8_r16.c : Regenerated. * generated/minloc0_8_r4.c : Regenerated. * generated/minloc0_8_r8.c : Regenerated. * generated/minloc0_8_s1.c : Regenerated. * generated/minloc0_8_s4.c : Regenerated. * generated/minloc1_16_i1.c : Regenerated. * generated/minloc1_16_i16.c : Regenerated. * generated/minloc1_16_i2.c : Regenerated. * generated/minloc1_16_i4.c : Regenerated. * generated/minloc1_16_i8.c : Regenerated. * generated/minloc1_16_r10.c : Regenerated. * generated/minloc1_16_r16.c : Regenerated. * generated/minloc1_16_r4.c : Regenerated. * generated/minloc1_16_r8.c : Regenerated. * generated/minloc1_16_s1.c : Regenerated. * generated/minloc1_16_s4.c : Regenerated. * generated/minloc1_4_i1.c : Regenerated. * generated/minloc1_4_i16.c : Regenerated. * generated/minloc1_4_i2.c : Regenerated. * generated/minloc1_4_i4.c : Regenerated. * generated/minloc1_4_i8.c : Regenerated. * generated/minloc1_4_r10.c : Regenerated. * generated/minloc1_4_r16.c : Regenerated. * generated/minloc1_4_r4.c : Regenerated. * generated/minloc1_4_r8.c : Regenerated. * generated/minloc1_4_s1.c : Regenerated. * generated/minloc1_4_s4.c : Regenerated. * generated/minloc1_8_i1.c : Regenerated. * generated/minloc1_8_i16.c : Regenerated. * generated/minloc1_8_i2.c : Regenerated. * generated/minloc1_8_i4.c : Regenerated. * generated/minloc1_8_i8.c : Regenerated. * generated/minloc1_8_r10.c : Regenerated. * generated/minloc1_8_r16.c : Regenerated. * generated/minloc1_8_r4.c : Regenerated. * generated/minloc1_8_r8.c : Regenerated. * generated/minloc1_8_s1.c : Regenerated. * generated/minloc1_8_s4.c : Regenerated. * generated/minval1_s1.c : Regenerated. * generated/minval1_s4.c : Regenerated. * generated/minval_i1.c : Regenerated. * generated/minval_i16.c : Regenerated. * generated/minval_i2.c : Regenerated. * generated/minval_i4.c : Regenerated. * generated/minval_i8.c : Regenerated. * generated/minval_r10.c : Regenerated. * generated/minval_r16.c : Regenerated. * generated/minval_r4.c : Regenerated. * generated/minval_r8.c : Regenerated. * generated/norm2_r10.c : Regenerated. * generated/norm2_r16.c : Regenerated. * generated/norm2_r4.c : Regenerated. * generated/norm2_r8.c : Regenerated. * generated/parity_l1.c : Regenerated. * generated/parity_l16.c : Regenerated. * generated/parity_l2.c : Regenerated. * generated/parity_l4.c : Regenerated. * generated/parity_l8.c : Regenerated. * generated/product_c10.c : Regenerated. * generated/product_c16.c : Regenerated. * generated/product_c4.c : Regenerated. * generated/product_c8.c : Regenerated. * generated/product_i1.c : Regenerated. * generated/product_i16.c : Regenerated. * generated/product_i2.c : Regenerated. * generated/product_i4.c : Regenerated. * generated/product_i8.c : Regenerated. * generated/product_r10.c : Regenerated. * generated/product_r16.c : Regenerated. * generated/product_r4.c : Regenerated. * generated/product_r8.c : Regenerated. * generated/reshape_c10.c : Regenerated. * generated/reshape_c16.c : Regenerated. * generated/reshape_c4.c : Regenerated. * generated/reshape_c8.c : Regenerated. * generated/reshape_i16.c : Regenerated. * generated/reshape_i4.c : Regenerated. * generated/reshape_i8.c : Regenerated. * generated/reshape_r10.c : Regenerated. * generated/reshape_r16.c : Regenerated. * generated/reshape_r4.c : Regenerated. * generated/reshape_r8.c : Regenerated. * generated/spread_c10.c : Regenerated. * generated/spread_c16.c : Regenerated. * generated/spread_c4.c : Regenerated. * generated/spread_c8.c : Regenerated. * generated/spread_i1.c : Regenerated. * generated/spread_i16.c : Regenerated. * generated/spread_i2.c : Regenerated. * generated/spread_i4.c : Regenerated. * generated/spread_i8.c : Regenerated. * generated/spread_r10.c : Regenerated. * generated/spread_r16.c : Regenerated. * generated/spread_r4.c : Regenerated. * generated/spread_r8.c : Regenerated. * generated/sum_c10.c : Regenerated. * generated/sum_c16.c : Regenerated. * generated/sum_c4.c : Regenerated. * generated/sum_c8.c : Regenerated. * generated/sum_i1.c : Regenerated. * generated/sum_i16.c : Regenerated. * generated/sum_i2.c : Regenerated. * generated/sum_i4.c : Regenerated. * generated/sum_i8.c : Regenerated. * generated/sum_r10.c : Regenerated. * generated/sum_r16.c : Regenerated. * generated/sum_r4.c : Regenerated. * generated/sum_r8.c : Regenerated. From-SVN: r256323
Diffstat (limited to 'libgfortran/m4')
-rw-r--r--libgfortran/m4/cshift1.m42
-rw-r--r--libgfortran/m4/eoshift1.m42
-rw-r--r--libgfortran/m4/eoshift3.m42
-rw-r--r--libgfortran/m4/iforeach-s.m46
-rw-r--r--libgfortran/m4/iforeach.m46
-rw-r--r--libgfortran/m4/ifunction-s.m46
-rw-r--r--libgfortran/m4/ifunction-s2.m46
-rw-r--r--libgfortran/m4/ifunction.m46
-rw-r--r--libgfortran/m4/ifunction_logical.m42
-rw-r--r--libgfortran/m4/reshape.m42
-rw-r--r--libgfortran/m4/spread.m42
11 files changed, 21 insertions, 21 deletions
diff --git a/libgfortran/m4/cshift1.m4 b/libgfortran/m4/cshift1.m4
index 6c53a48bf9d..07241a506a6 100644
--- a/libgfortran/m4/cshift1.m4
+++ b/libgfortran/m4/cshift1.m4
@@ -82,7 +82,7 @@ cshift1 (gfc_array_char * const restrict ret,
ret->base_addr = xmallocarray (arraysize, size);
ret->offset = 0;
- ret->dtype = array->dtype;
+ GFC_DTYPE_COPY(ret,array);
for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
{
index_type ub, str;
diff --git a/libgfortran/m4/eoshift1.m4 b/libgfortran/m4/eoshift1.m4
index de15142fadf..aab46fd08a5 100644
--- a/libgfortran/m4/eoshift1.m4
+++ b/libgfortran/m4/eoshift1.m4
@@ -88,7 +88,7 @@ eoshift1 (gfc_array_char * const restrict ret,
int i;
ret->offset = 0;
- ret->dtype = array->dtype;
+ GFC_DTYPE_COPY(ret,array);
for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
{
index_type ub, str;
diff --git a/libgfortran/m4/eoshift3.m4 b/libgfortran/m4/eoshift3.m4
index e3ac06a1bae..a8077496760 100644
--- a/libgfortran/m4/eoshift3.m4
+++ b/libgfortran/m4/eoshift3.m4
@@ -90,7 +90,7 @@ eoshift3 (gfc_array_char * const restrict ret,
ret->base_addr = xmallocarray (arraysize, size);
ret->offset = 0;
- ret->dtype = array->dtype;
+ GFC_DTYPE_COPY(ret,array);
for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
{
index_type ub, str;
diff --git a/libgfortran/m4/iforeach-s.m4 b/libgfortran/m4/iforeach-s.m4
index 39868ddf3ee..c62a1f734cb 100644
--- a/libgfortran/m4/iforeach-s.m4
+++ b/libgfortran/m4/iforeach-s.m4
@@ -37,7 +37,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
if (retarray->base_addr == NULL)
{
GFC_DIMENSION_SET(retarray->dim[0], 0, rank-1, 1);
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
+ GFC_DTYPE_COPY_SETRANK(retarray,retarray,1);
retarray->offset = 0;
retarray->base_addr = xmallocarray (rank, sizeof (rtype_name));
}
@@ -140,7 +140,7 @@ void
if (retarray->base_addr == NULL)
{
GFC_DIMENSION_SET(retarray->dim[0], 0, rank - 1, 1);
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
+ GFC_DTYPE_COPY_SETRANK(retarray,retarray,1);
retarray->offset = 0;
retarray->base_addr = xmallocarray (rank, sizeof (rtype_name));
}
@@ -271,7 +271,7 @@ void
if (retarray->base_addr == NULL)
{
GFC_DIMENSION_SET(retarray->dim[0], 0, rank-1, 1);
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
+ GFC_DTYPE_COPY_SETRANK(retarray,retarray,1);
retarray->offset = 0;
retarray->base_addr = xmallocarray (rank, sizeof (rtype_name));
}
diff --git a/libgfortran/m4/iforeach.m4 b/libgfortran/m4/iforeach.m4
index e7521e62537..2b9e7dd73f3 100644
--- a/libgfortran/m4/iforeach.m4
+++ b/libgfortran/m4/iforeach.m4
@@ -28,7 +28,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
if (retarray->base_addr == NULL)
{
GFC_DIMENSION_SET(retarray->dim[0], 0, rank-1, 1);
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
+ GFC_DTYPE_COPY_SETRANK(retarray,retarray,1);
retarray->offset = 0;
retarray->base_addr = xmallocarray (rank, sizeof (rtype_name));
}
@@ -131,7 +131,7 @@ void
if (retarray->base_addr == NULL)
{
GFC_DIMENSION_SET(retarray->dim[0], 0, rank - 1, 1);
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
+ GFC_DTYPE_COPY_SETRANK(retarray,retarray,1);
retarray->offset = 0;
retarray->base_addr = xmallocarray (rank, sizeof (rtype_name));
}
@@ -262,7 +262,7 @@ void
if (retarray->base_addr == NULL)
{
GFC_DIMENSION_SET(retarray->dim[0], 0, rank-1, 1);
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
+ GFC_DTYPE_COPY_SETRANK(retarray,retarray,1);
retarray->offset = 0;
retarray->base_addr = xmallocarray (rank, sizeof (rtype_name));
}
diff --git a/libgfortran/m4/ifunction-s.m4 b/libgfortran/m4/ifunction-s.m4
index 93ca694c826..0f0c28fa416 100644
--- a/libgfortran/m4/ifunction-s.m4
+++ b/libgfortran/m4/ifunction-s.m4
@@ -101,7 +101,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
@@ -288,7 +288,7 @@ void
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
if (alloc_size == 0)
{
@@ -446,7 +446,7 @@ void
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
diff --git a/libgfortran/m4/ifunction-s2.m4 b/libgfortran/m4/ifunction-s2.m4
index 4eb09084dde..27c2236b402 100644
--- a/libgfortran/m4/ifunction-s2.m4
+++ b/libgfortran/m4/ifunction-s2.m4
@@ -104,7 +104,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1]
* string_len;
@@ -296,7 +296,7 @@ void
* string_len;
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
if (alloc_size == 0)
{
@@ -457,7 +457,7 @@ void
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1]
* string_len;
diff --git a/libgfortran/m4/ifunction.m4 b/libgfortran/m4/ifunction.m4
index 7777a0c8c07..fa10a8b84cb 100644
--- a/libgfortran/m4/ifunction.m4
+++ b/libgfortran/m4/ifunction.m4
@@ -90,7 +90,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
@@ -277,7 +277,7 @@ void
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
if (alloc_size == 0)
{
@@ -435,7 +435,7 @@ void
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
diff --git a/libgfortran/m4/ifunction_logical.m4 b/libgfortran/m4/ifunction_logical.m4
index fda8812cc51..d58c2a0ab21 100644
--- a/libgfortran/m4/ifunction_logical.m4
+++ b/libgfortran/m4/ifunction_logical.m4
@@ -87,7 +87,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
}
retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+ GFC_DTYPE_COPY_SETRANK(retarray,array,rank);
alloc_size = GFC_DESCRIPTOR_STRIDE(retarray,rank-1) * extent[rank-1];
diff --git a/libgfortran/m4/reshape.m4 b/libgfortran/m4/reshape.m4
index 67ad094b9c3..79cbca3feed 100644
--- a/libgfortran/m4/reshape.m4
+++ b/libgfortran/m4/reshape.m4
@@ -122,7 +122,7 @@ reshape_'rtype_ccode` ('rtype` * const restrict ret,
alloc_size = rs;
ret->base_addr = xmallocarray (alloc_size, sizeof ('rtype_name`));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
+ GFC_DTYPE_COPY_SETRANK(ret,source,rdim);
}
if (shape_empty)
diff --git a/libgfortran/m4/spread.m4 b/libgfortran/m4/spread.m4
index c4ac6e2f399..e8c52aad144 100644
--- a/libgfortran/m4/spread.m4
+++ b/libgfortran/m4/spread.m4
@@ -73,7 +73,7 @@ spread_'rtype_code` ('rtype` *ret, const 'rtype` *source,
/* The front end has signalled that we need to populate the
return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
+ GFC_DTYPE_COPY_SETRANK(ret,source,rrank);
dim = 0;
rs = 1;
for (n = 0; n < rrank; n++)