/* Special implementation of the SPREAD intrinsic
- Copyright (C) 2008-2015 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
spread_generic.c written by Paul Brook <paul@nowt.org>
<http://www.gnu.org/licenses/>. */
#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
#include <string.h>
srank = GFC_DESCRIPTOR_RANK(source);
+ sstride[0] = 0; /* Avoid warnings if not initialized. */
+
rrank = srank + 1;
if (rrank > GFC_MAX_DIMENSIONS)
runtime_error ("return rank too large in spread()");
/* The front end has signalled that we need to populate the
return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
+ ret->dtype.rank = rrank;
+
dim = 0;
rs = 1;
for (n = 0; n < rrank; n++)
void
spread_scalar_i8 (gfc_array_i8 *ret, const GFC_INTEGER_8 *source,
- const index_type along, const index_type pncopies)
+ const index_type along, const index_type ncopies)
{
- int n;
- int ncopies = pncopies;
GFC_INTEGER_8 * restrict dest;
index_type stride;
dest = ret->base_addr;
stride = GFC_DESCRIPTOR_STRIDE(ret,0);
- for (n = 0; n < ncopies; n++)
+ for (index_type n = 0; n < ncopies; n++)
{
*dest = *source;
dest += stride;