Commit e9bfdf18 by Thomas Koenig

libgfortran.h (GFC_ARRAY_DESCRIPTOR): Remove dimension of descriptor to use…

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
parent 52eb4ab4
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> 2018-01-31 Janne Blomqvist <jb@gcc.gnu.org>
* generated/cshift1_16.c (cshift1): Regenerated. * generated/cshift1_16.c (cshift1): Regenerated.
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_COMPLEX_10) #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, extern void reshape_c10 (gfc_array_c10 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_COMPLEX_16) #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, extern void reshape_c16 (gfc_array_c16 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_COMPLEX_4) #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, extern void reshape_c4 (gfc_array_c4 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_COMPLEX_8) #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, extern void reshape_c8 (gfc_array_c8 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_INTEGER_16) #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, extern void reshape_16 (gfc_array_i16 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_INTEGER_4) #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, extern void reshape_4 (gfc_array_i4 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_INTEGER_8) #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, extern void reshape_8 (gfc_array_i8 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_REAL_10) #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, extern void reshape_r10 (gfc_array_r10 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_REAL_16) #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, extern void reshape_r16 (gfc_array_r16 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_REAL_4) #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, extern void reshape_r4 (gfc_array_r4 * const restrict,
......
...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if defined (HAVE_GFC_REAL_8) #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, extern void reshape_r8 (gfc_array_r8 * const restrict,
......
...@@ -267,8 +267,10 @@ secnds (GFC_REAL_4 *x) ...@@ -267,8 +267,10 @@ secnds (GFC_REAL_4 *x)
GFC_INTEGER_4 values[VALUES_SIZE]; GFC_INTEGER_4 values[VALUES_SIZE];
GFC_REAL_4 temp1, temp2; GFC_REAL_4 temp1, temp2;
/* Make the INTEGER*4 array for passing to date_and_time. */ /* Make the INTEGER*4 array for passing to date_and_time, with enough space
gfc_array_i4 *avalues = xmalloc (sizeof (gfc_array_i4)); for a rank-one array. */
gfc_array_i4 *avalues = xmalloc (sizeof (gfc_array_i4)
+ sizeof (descriptor_dimension));
avalues->base_addr = &values[0]; avalues->base_addr = &values[0];
GFC_DESCRIPTOR_DTYPE (avalues).type = BT_REAL; GFC_DESCRIPTOR_DTYPE (avalues).type = BT_REAL;
GFC_DESCRIPTOR_DTYPE (avalues).elem_len = 4; GFC_DESCRIPTOR_DTYPE (avalues).elem_len = 4;
......
...@@ -26,8 +26,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -26,8 +26,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#include "libgfortran.h" #include "libgfortran.h"
#include <string.h> #include <string.h>
typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type; typedef GFC_FULL_ARRAY_DESCRIPTOR(1, index_type) shape_type;
typedef GFC_ARRAY_DESCRIPTOR(GFC_MAX_DIMENSIONS, char) parray; typedef GFC_FULL_ARRAY_DESCRIPTOR(GFC_MAX_DIMENSIONS, char) parray;
static void static void
reshape_internal (parray *ret, parray *source, shape_type *shape, reshape_internal (parray *ret, parray *source, shape_type *shape,
......
...@@ -1024,8 +1024,9 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd) ...@@ -1024,8 +1024,9 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
t = format_lex (fmt); t = format_lex (fmt);
/* Initialize the vlist to a zero size array. */ /* Initialize the vlist to a zero size, rank-one array. */
tail->u.udf.vlist= xmalloc (sizeof(gfc_array_i4)); tail->u.udf.vlist= xmalloc (sizeof(gfc_array_i4)
+ sizeof (descriptor_dimension));
GFC_DESCRIPTOR_DATA(tail->u.udf.vlist) = NULL; GFC_DESCRIPTOR_DATA(tail->u.udf.vlist) = NULL;
GFC_DIMENSION_SET(tail->u.udf.vlist->dim[0],1, 0, 0); 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, ...@@ -2198,7 +2198,7 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p,
gfc_charlen_type child_iomsg_len; gfc_charlen_type child_iomsg_len;
int noiostat; int noiostat;
int *child_iostat = NULL; int *child_iostat = NULL;
gfc_array_i4 vlist; gfc_full_array_i4 vlist;
GFC_DESCRIPTOR_DATA(&vlist) = NULL; GFC_DESCRIPTOR_DATA(&vlist) = NULL;
GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0); 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, ...@@ -2996,7 +2996,7 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset,
gfc_charlen_type child_iomsg_len; gfc_charlen_type child_iomsg_len;
int noiostat; int noiostat;
int *child_iostat = NULL; int *child_iostat = NULL;
gfc_array_i4 vlist; gfc_full_array_i4 vlist;
formatted_dtio dtio_ptr = (formatted_dtio)nl->dtio_sub; formatted_dtio dtio_ptr = (formatted_dtio)nl->dtio_sub;
GFC_DESCRIPTOR_DATA(&vlist) = NULL; GFC_DESCRIPTOR_DATA(&vlist) = NULL;
......
...@@ -1886,7 +1886,7 @@ list_formatted_write_scalar (st_parameter_dt *dtp, bt type, void *p, int kind, ...@@ -1886,7 +1886,7 @@ list_formatted_write_scalar (st_parameter_dt *dtp, bt type, void *p, int kind,
gfc_charlen_type child_iomsg_len; gfc_charlen_type child_iomsg_len;
int noiostat; int noiostat;
int *child_iostat = NULL; int *child_iostat = NULL;
gfc_array_i4 vlist; gfc_full_array_i4 vlist;
GFC_DESCRIPTOR_DATA(&vlist) = NULL; GFC_DESCRIPTOR_DATA(&vlist) = NULL;
GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0); 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, ...@@ -2211,7 +2211,7 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info *obj, index_type offset,
gfc_charlen_type child_iomsg_len; gfc_charlen_type child_iomsg_len;
int noiostat; int noiostat;
int *child_iostat = NULL; int *child_iostat = NULL;
gfc_array_i4 vlist; gfc_full_array_i4 vlist;
formatted_dtio dtio_ptr = (formatted_dtio)obj->dtio_sub; formatted_dtio dtio_ptr = (formatted_dtio)obj->dtio_sub;
GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0); GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0);
......
...@@ -339,51 +339,65 @@ typedef struct dtype_type ...@@ -339,51 +339,65 @@ typedef struct dtype_type
} }
dtype_type; dtype_type;
#define GFC_ARRAY_DESCRIPTOR(r, type) \ #define GFC_ARRAY_DESCRIPTOR(type) \
struct {\ struct {\
type *base_addr;\ type *base_addr;\
size_t offset;\ size_t offset;\
dtype_type dtype;\ dtype_type dtype;\
index_type span;\ index_type span;\
descriptor_dimension dim[r];\ descriptor_dimension dim[];\
} }
/* Commonly used array descriptor types. */ /* Commonly used array descriptor types. */
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, void) gfc_array_void; typedef GFC_ARRAY_DESCRIPTOR (void) gfc_array_void;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, char) gfc_array_char; typedef GFC_ARRAY_DESCRIPTOR (char) gfc_array_char;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_1) gfc_array_i1; typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_1) gfc_array_i1;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_2) gfc_array_i2; typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_2) gfc_array_i2;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_4) gfc_array_i4; typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_4) gfc_array_i4;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_8) gfc_array_i8; typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_8) gfc_array_i8;
#ifdef HAVE_GFC_INTEGER_16 #ifdef HAVE_GFC_INTEGER_16
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_16) gfc_array_i16; typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_16) gfc_array_i16;
#endif #endif
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_4) gfc_array_r4; typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_4) gfc_array_r4;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_8) gfc_array_r8; typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_8) gfc_array_r8;
#ifdef HAVE_GFC_REAL_10 #ifdef HAVE_GFC_REAL_10
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_10) gfc_array_r10; typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_10) gfc_array_r10;
#endif #endif
#ifdef HAVE_GFC_REAL_16 #ifdef HAVE_GFC_REAL_16
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_16) gfc_array_r16; typedef GFC_ARRAY_DESCRIPTOR (GFC_REAL_16) gfc_array_r16;
#endif #endif
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_4) gfc_array_c4; typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_4) gfc_array_c4;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_8) gfc_array_c8; typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_8) gfc_array_c8;
#ifdef HAVE_GFC_COMPLEX_10 #ifdef HAVE_GFC_COMPLEX_10
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_10) gfc_array_c10; typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_10) gfc_array_c10;
#endif #endif
#ifdef HAVE_GFC_COMPLEX_16 #ifdef HAVE_GFC_COMPLEX_16
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_16) gfc_array_c16; typedef GFC_ARRAY_DESCRIPTOR (GFC_COMPLEX_16) gfc_array_c16;
#endif #endif
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_1) gfc_array_l1; typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_1) gfc_array_l1;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_2) gfc_array_l2; typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_2) gfc_array_l2;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_4) gfc_array_l4; typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_4) gfc_array_l4;
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_8) gfc_array_l8; typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_8) gfc_array_l8;
#ifdef HAVE_GFC_LOGICAL_16 #ifdef HAVE_GFC_LOGICAL_16
typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_16) gfc_array_l16; typedef GFC_ARRAY_DESCRIPTOR (GFC_LOGICAL_16) gfc_array_l16;
#endif #endif
typedef gfc_array_i1 gfc_array_s1; typedef gfc_array_i1 gfc_array_s1;
typedef gfc_array_i4 gfc_array_s4; 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;\
dtype_type dtype;\
index_type span;\
descriptor_dimension dim[r];\
}
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_RANK(desc) ((desc)->dtype.rank)
#define GFC_DESCRIPTOR_TYPE(desc) ((desc)->dtype.type) #define GFC_DESCRIPTOR_TYPE(desc) ((desc)->dtype.type)
#define GFC_DESCRIPTOR_SIZE(desc) ((desc)->dtype.elem_len) #define GFC_DESCRIPTOR_SIZE(desc) ((desc)->dtype.elem_len)
...@@ -1345,7 +1359,7 @@ iexport_proto(random_seed_i8); ...@@ -1345,7 +1359,7 @@ iexport_proto(random_seed_i8);
/* size.c */ /* 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); extern index_type size0 (const array_t * array);
iexport_proto(size0); iexport_proto(size0);
......
...@@ -29,7 +29,7 @@ include(iparm.m4)dnl ...@@ -29,7 +29,7 @@ include(iparm.m4)dnl
`#if defined (HAVE_'rtype_name`) `#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 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 dnl function. The same function will be used for integer and logical
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment