aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/generated
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/generated')
-rw-r--r--libgfortran/generated/reshape_c10.c64
-rw-r--r--libgfortran/generated/reshape_c16.c64
-rw-r--r--libgfortran/generated/reshape_c4.c64
-rw-r--r--libgfortran/generated/reshape_c8.c64
-rw-r--r--libgfortran/generated/reshape_i16.c64
-rw-r--r--libgfortran/generated/reshape_i4.c64
-rw-r--r--libgfortran/generated/reshape_i8.c64
-rw-r--r--libgfortran/generated/reshape_r10.c64
-rw-r--r--libgfortran/generated/reshape_r16.c64
-rw-r--r--libgfortran/generated/reshape_r4.c64
-rw-r--r--libgfortran/generated/reshape_r8.c64
11 files changed, 352 insertions, 352 deletions
diff --git a/libgfortran/generated/reshape_c10.c b/libgfortran/generated/reshape_c10.c
index 3305994..53e59db 100644
--- a/libgfortran/generated/reshape_c10.c
+++ b/libgfortran/generated/reshape_c10.c
@@ -119,6 +119,37 @@ reshape_c10 (gfc_array_c10 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_c10 (gfc_array_c10 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_c10 (gfc_array_c10 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_COMPLEX_10);
diff --git a/libgfortran/generated/reshape_c16.c b/libgfortran/generated/reshape_c16.c
index 3b026a5..19cfdfc 100644
--- a/libgfortran/generated/reshape_c16.c
+++ b/libgfortran/generated/reshape_c16.c
@@ -119,6 +119,37 @@ reshape_c16 (gfc_array_c16 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_c16 (gfc_array_c16 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_c16 (gfc_array_c16 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_COMPLEX_16);
diff --git a/libgfortran/generated/reshape_c4.c b/libgfortran/generated/reshape_c4.c
index 1c4740c..64156d9 100644
--- a/libgfortran/generated/reshape_c4.c
+++ b/libgfortran/generated/reshape_c4.c
@@ -119,6 +119,37 @@ reshape_c4 (gfc_array_c4 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_c4 (gfc_array_c4 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_c4 (gfc_array_c4 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_COMPLEX_4);
diff --git a/libgfortran/generated/reshape_c8.c b/libgfortran/generated/reshape_c8.c
index d68ea48..5ba646c 100644
--- a/libgfortran/generated/reshape_c8.c
+++ b/libgfortran/generated/reshape_c8.c
@@ -119,6 +119,37 @@ reshape_c8 (gfc_array_c8 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_c8 (gfc_array_c8 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_c8 (gfc_array_c8 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_COMPLEX_8);
diff --git a/libgfortran/generated/reshape_i16.c b/libgfortran/generated/reshape_i16.c
index f46d758..81223ea 100644
--- a/libgfortran/generated/reshape_i16.c
+++ b/libgfortran/generated/reshape_i16.c
@@ -119,6 +119,37 @@ reshape_16 (gfc_array_i16 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_16 (gfc_array_i16 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_16 (gfc_array_i16 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_INTEGER_16);
diff --git a/libgfortran/generated/reshape_i4.c b/libgfortran/generated/reshape_i4.c
index d868c93..911f2d7 100644
--- a/libgfortran/generated/reshape_i4.c
+++ b/libgfortran/generated/reshape_i4.c
@@ -119,6 +119,37 @@ reshape_4 (gfc_array_i4 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_4 (gfc_array_i4 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_4 (gfc_array_i4 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_INTEGER_4);
diff --git a/libgfortran/generated/reshape_i8.c b/libgfortran/generated/reshape_i8.c
index bcd984f..b5f9c1e 100644
--- a/libgfortran/generated/reshape_i8.c
+++ b/libgfortran/generated/reshape_i8.c
@@ -119,6 +119,37 @@ reshape_8 (gfc_array_i8 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_8 (gfc_array_i8 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_8 (gfc_array_i8 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_INTEGER_8);
diff --git a/libgfortran/generated/reshape_r10.c b/libgfortran/generated/reshape_r10.c
index ac02959..57dca1a 100644
--- a/libgfortran/generated/reshape_r10.c
+++ b/libgfortran/generated/reshape_r10.c
@@ -119,6 +119,37 @@ reshape_r10 (gfc_array_r10 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_r10 (gfc_array_r10 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_r10 (gfc_array_r10 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_REAL_10);
diff --git a/libgfortran/generated/reshape_r16.c b/libgfortran/generated/reshape_r16.c
index c12fab5..4509df5 100644
--- a/libgfortran/generated/reshape_r16.c
+++ b/libgfortran/generated/reshape_r16.c
@@ -119,6 +119,37 @@ reshape_r16 (gfc_array_r16 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_r16 (gfc_array_r16 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_r16 (gfc_array_r16 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_REAL_16);
diff --git a/libgfortran/generated/reshape_r4.c b/libgfortran/generated/reshape_r4.c
index aa4bdec..c913557 100644
--- a/libgfortran/generated/reshape_r4.c
+++ b/libgfortran/generated/reshape_r4.c
@@ -119,6 +119,37 @@ reshape_r4 (gfc_array_r4 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_r4 (gfc_array_r4 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_REAL_4);
diff --git a/libgfortran/generated/reshape_r8.c b/libgfortran/generated/reshape_r8.c
index bacaaac..33ce1f0 100644
--- a/libgfortran/generated/reshape_r8.c
+++ b/libgfortran/generated/reshape_r8.c
@@ -119,6 +119,37 @@ reshape_r8 (gfc_array_r8 * const restrict ret,
if (shape_empty)
return;
+ if (pad)
+ {
+ pdim = GFC_DESCRIPTOR_RANK (pad);
+ psize = 1;
+ pempty = 0;
+ for (n = 0; n < pdim; n++)
+ {
+ pcount[n] = 0;
+ pstride[n] = pad->dim[n].stride;
+ pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
+ if (pextent[n] <= 0)
+ {
+ pempty = 1;
+ pextent[n] = 0;
+ }
+
+ if (psize == pstride[n])
+ psize *= pextent[n];
+ else
+ psize = 0;
+ }
+ pptr = pad->data;
+ }
+ else
+ {
+ pdim = 0;
+ psize = 1;
+ pempty = 1;
+ pptr = NULL;
+ }
+
if (unlikely (compile_options.bounds_check))
{
index_type ret_extent, source_extent;
@@ -144,7 +175,7 @@ reshape_r8 (gfc_array_r8 * const restrict ret,
source_extent *= se > 0 ? se : 0;
}
- if (rs < source_extent || (rs > source_extent && !pad))
+ if (rs > source_extent && (!pad || pempty))
runtime_error("Incorrect size in SOURCE argument to RESHAPE"
" intrinsic: is %ld, should be %ld",
(long int) source_extent, (long int) rs);
@@ -219,37 +250,6 @@ reshape_r8 (gfc_array_r8 * const restrict ret,
ssize = 0;
}
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
if (rsize != 0 && ssize != 0 && psize != 0)
{
rsize *= sizeof (GFC_REAL_8);