libgfortran.h (GFC_ARRAY_DESCRIPTOR): Remove dimension of descriptor to use vaiable members for dim.
2018-02-12 Thomas Koenig <tkoenig@gcc.gnu.org> * libgfortran.h (GFC_ARRAY_DESCRIPTOR): Remove dimension of descriptor to use vaiable members for dim. Change usage of GFC_ARRAY_DESCRIPTOR accordingly. (GFC_FILL_ARRAY_DESCRIPTOR): New macro. (gfc_full_array_i4): New type. * intrinsics/date_and_time.c (secnds): Use sizeof (gfc_array_i4) + sizeof (descriptor_dimension) for memory allocation. * intrinsics/reshape_generic.c: Use GFC_FULL_ARRAY_DESCRIPTOR. * io/format.c: Use sizeof (gfc_array_i4) + sizeof (descriptor_dimension) for memoy allocation. * io/list_read.c (list_formatted_read_scalar): Use gfc_full_array_i4 for variable. (nml_read_obj): Likewise. * io/write.c (list_formatted_write_scalar): Likewise. (nml_write_obj): Likewise. * m4/reshape.m4: Use GFC_FULL_ARRAY_DESCRIPTOR. * 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. From-SVN: r257601
This commit is contained in:
parent
52eb4ab409
commit
e9bfdf18cb
@ -1,3 +1,34 @@
|
||||
2018-02-12 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
* libgfortran.h (GFC_ARRAY_DESCRIPTOR): Remove dimension
|
||||
of descriptor to use vaiable members for dim.
|
||||
Change usage of GFC_ARRAY_DESCRIPTOR accordingly.
|
||||
(GFC_FILL_ARRAY_DESCRIPTOR): New macro.
|
||||
(gfc_full_array_i4): New type.
|
||||
* intrinsics/date_and_time.c (secnds): Use sizeof
|
||||
(gfc_array_i4) + sizeof (descriptor_dimension) for memory
|
||||
allocation.
|
||||
* intrinsics/reshape_generic.c: Use GFC_FULL_ARRAY_DESCRIPTOR.
|
||||
* io/format.c: Use sizeof (gfc_array_i4) + sizeof
|
||||
(descriptor_dimension) for memoy allocation.
|
||||
* io/list_read.c (list_formatted_read_scalar): Use
|
||||
gfc_full_array_i4 for variable.
|
||||
(nml_read_obj): Likewise.
|
||||
* io/write.c (list_formatted_write_scalar): Likewise.
|
||||
(nml_write_obj): Likewise.
|
||||
* m4/reshape.m4: Use GFC_FULL_ARRAY_DESCRIPTOR.
|
||||
* 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.
|
||||
|
||||
2018-01-31 Janne Blomqvist <jb@gcc.gnu.org>
|
||||
|
||||
* generated/cshift1_16.c (cshift1): Regenerated.
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_COMPLEX_10)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_c10 (gfc_array_c10 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_COMPLEX_16)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_c16 (gfc_array_c16 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_COMPLEX_4)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_c4 (gfc_array_c4 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_COMPLEX_8)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_c8 (gfc_array_c8 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_INTEGER_16)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_16 (gfc_array_i16 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_INTEGER_4)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_4 (gfc_array_i4 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_INTEGER_8)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_8 (gfc_array_i8 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_REAL_10)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_r10 (gfc_array_r10 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_REAL_16)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_r16 (gfc_array_r16 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_REAL_4)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_r4 (gfc_array_r4 * const restrict,
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#if defined (HAVE_GFC_REAL_8)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
|
||||
|
||||
extern void reshape_r8 (gfc_array_r8 * const restrict,
|
||||
|
@ -267,8 +267,10 @@ secnds (GFC_REAL_4 *x)
|
||||
GFC_INTEGER_4 values[VALUES_SIZE];
|
||||
GFC_REAL_4 temp1, temp2;
|
||||
|
||||
/* Make the INTEGER*4 array for passing to date_and_time. */
|
||||
gfc_array_i4 *avalues = xmalloc (sizeof (gfc_array_i4));
|
||||
/* Make the INTEGER*4 array for passing to date_and_time, with enough space
|
||||
for a rank-one array. */
|
||||
gfc_array_i4 *avalues = xmalloc (sizeof (gfc_array_i4)
|
||||
+ sizeof (descriptor_dimension));
|
||||
avalues->base_addr = &values[0];
|
||||
GFC_DESCRIPTOR_DTYPE (avalues).type = BT_REAL;
|
||||
GFC_DESCRIPTOR_DTYPE (avalues).elem_len = 4;
|
||||
|
@ -26,8 +26,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "libgfortran.h"
|
||||
#include <string.h>
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_ARRAY_DESCRIPTOR(GFC_MAX_DIMENSIONS, char) parray;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(GFC_MAX_DIMENSIONS, char) parray;
|
||||
|
||||
static void
|
||||
reshape_internal (parray *ret, parray *source, shape_type *shape,
|
||||
|
@ -1024,8 +1024,9 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||
|
||||
t = format_lex (fmt);
|
||||
|
||||
/* Initialize the vlist to a zero size array. */
|
||||
tail->u.udf.vlist= xmalloc (sizeof(gfc_array_i4));
|
||||
/* Initialize the vlist to a zero size, rank-one array. */
|
||||
tail->u.udf.vlist= xmalloc (sizeof(gfc_array_i4)
|
||||
+ sizeof (descriptor_dimension));
|
||||
GFC_DESCRIPTOR_DATA(tail->u.udf.vlist) = NULL;
|
||||
GFC_DIMENSION_SET(tail->u.udf.vlist->dim[0],1, 0, 0);
|
||||
|
||||
|
@ -2198,7 +2198,7 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p,
|
||||
gfc_charlen_type child_iomsg_len;
|
||||
int noiostat;
|
||||
int *child_iostat = NULL;
|
||||
gfc_array_i4 vlist;
|
||||
gfc_full_array_i4 vlist;
|
||||
|
||||
GFC_DESCRIPTOR_DATA(&vlist) = NULL;
|
||||
GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0);
|
||||
@ -2996,7 +2996,7 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset,
|
||||
gfc_charlen_type child_iomsg_len;
|
||||
int noiostat;
|
||||
int *child_iostat = NULL;
|
||||
gfc_array_i4 vlist;
|
||||
gfc_full_array_i4 vlist;
|
||||
formatted_dtio dtio_ptr = (formatted_dtio)nl->dtio_sub;
|
||||
|
||||
GFC_DESCRIPTOR_DATA(&vlist) = NULL;
|
||||
|
@ -1886,7 +1886,7 @@ list_formatted_write_scalar (st_parameter_dt *dtp, bt type, void *p, int kind,
|
||||
gfc_charlen_type child_iomsg_len;
|
||||
int noiostat;
|
||||
int *child_iostat = NULL;
|
||||
gfc_array_i4 vlist;
|
||||
gfc_full_array_i4 vlist;
|
||||
|
||||
GFC_DESCRIPTOR_DATA(&vlist) = NULL;
|
||||
GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0);
|
||||
@ -2211,7 +2211,7 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info *obj, index_type offset,
|
||||
gfc_charlen_type child_iomsg_len;
|
||||
int noiostat;
|
||||
int *child_iostat = NULL;
|
||||
gfc_array_i4 vlist;
|
||||
gfc_full_array_i4 vlist;
|
||||
formatted_dtio dtio_ptr = (formatted_dtio)obj->dtio_sub;
|
||||
|
||||
GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0);
|
||||
|
@ -339,7 +339,55 @@ typedef struct dtype_type
|
||||
}
|
||||
dtype_type;
|
||||
|
||||
#define GFC_ARRAY_DESCRIPTOR(r, type) \
|
||||
#define GFC_ARRAY_DESCRIPTOR(type) \
|
||||
struct {\
|
||||
type *base_addr;\
|
||||
size_t offset;\
|
||||
dtype_type dtype;\
|
||||
index_type span;\
|
||||
descriptor_dimension dim[];\
|
||||
}
|
||||
|
||||
/* Commonly used array descriptor types. */
|
||||
typedef GFC_ARRAY_DESCRIPTOR (void) gfc_array_void;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (char) gfc_array_char;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_1) gfc_array_i1;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_2) gfc_array_i2;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_4) gfc_array_i4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_8) gfc_array_i8;
|
||||
#ifdef HAVE_GFC_INTEGER_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_16) gfc_array_i16;
|
||||
#endif
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_4) gfc_array_r4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_8) gfc_array_r8;
|
||||
#ifdef HAVE_GFC_REAL_10
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_10) gfc_array_r10;
|
||||
#endif
|
||||
#ifdef HAVE_GFC_REAL_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_16) gfc_array_r16;
|
||||
#endif
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_4) gfc_array_c4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_8) gfc_array_c8;
|
||||
#ifdef HAVE_GFC_COMPLEX_10
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_10) gfc_array_c10;
|
||||
#endif
|
||||
#ifdef HAVE_GFC_COMPLEX_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_16) gfc_array_c16;
|
||||
#endif
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_1) gfc_array_l1;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_2) gfc_array_l2;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_4) gfc_array_l4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_8) gfc_array_l8;
|
||||
#ifdef HAVE_GFC_LOGICAL_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_16) gfc_array_l16;
|
||||
#endif
|
||||
typedef gfc_array_i1 gfc_array_s1;
|
||||
typedef gfc_array_i4 gfc_array_s4;
|
||||
|
||||
/* These are for when you actually want to declare a descriptor, as
|
||||
opposed to a pointer to it. */
|
||||
|
||||
#define GFC_FULL_ARRAY_DESCRIPTOR(r, type) \
|
||||
struct {\
|
||||
type *base_addr;\
|
||||
size_t offset;\
|
||||
@ -348,41 +396,7 @@ struct {\
|
||||
descriptor_dimension dim[r];\
|
||||
}
|
||||
|
||||
/* Commonly used array descriptor types. */
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, void) gfc_array_void;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, char) gfc_array_char;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_1) gfc_array_i1;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_2) gfc_array_i2;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_4) gfc_array_i4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_8) gfc_array_i8;
|
||||
#ifdef HAVE_GFC_INTEGER_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_16) gfc_array_i16;
|
||||
#endif
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_4) gfc_array_r4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_8) gfc_array_r8;
|
||||
#ifdef HAVE_GFC_REAL_10
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_10) gfc_array_r10;
|
||||
#endif
|
||||
#ifdef HAVE_GFC_REAL_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_16) gfc_array_r16;
|
||||
#endif
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_4) gfc_array_c4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_8) gfc_array_c8;
|
||||
#ifdef HAVE_GFC_COMPLEX_10
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_10) gfc_array_c10;
|
||||
#endif
|
||||
#ifdef HAVE_GFC_COMPLEX_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_16) gfc_array_c16;
|
||||
#endif
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_1) gfc_array_l1;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_2) gfc_array_l2;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_4) gfc_array_l4;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_8) gfc_array_l8;
|
||||
#ifdef HAVE_GFC_LOGICAL_16
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_16) gfc_array_l16;
|
||||
#endif
|
||||
typedef gfc_array_i1 gfc_array_s1;
|
||||
typedef gfc_array_i4 gfc_array_s4;
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_4) gfc_full_array_i4;
|
||||
|
||||
#define GFC_DESCRIPTOR_RANK(desc) ((desc)->dtype.rank)
|
||||
#define GFC_DESCRIPTOR_TYPE(desc) ((desc)->dtype.type)
|
||||
@ -1345,7 +1359,7 @@ iexport_proto(random_seed_i8);
|
||||
|
||||
/* size.c */
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, void) array_t;
|
||||
typedef GFC_ARRAY_DESCRIPTOR (void) array_t;
|
||||
|
||||
extern index_type size0 (const array_t * array);
|
||||
iexport_proto(size0);
|
||||
|
@ -29,7 +29,7 @@ include(iparm.m4)dnl
|
||||
|
||||
`#if defined (HAVE_'rtype_name`)
|
||||
|
||||
typedef GFC_ARRAY_DESCRIPTOR(1, 'index_type`) 'shape_type`;'
|
||||
typedef GFC_FULL_ARRAY_DESCRIPTOR(1, 'index_type`) 'shape_type`;'
|
||||
|
||||
dnl For integer routines, only the kind (ie size) is used to name the
|
||||
dnl function. The same function will be used for integer and logical
|
||||
|
Loading…
Reference in New Issue
Block a user