Fortran: Remove deprecated coarray routines [PR107635]

gcc/fortran/ChangeLog:

	PR fortran/107635

	* gfortran.texi: Remove deprecated functions from documentation.
	* trans-decl.cc (gfc_build_builtin_function_decls): Remove
	decprecated function decls.
	* trans-intrinsic.cc (gfc_conv_intrinsic_exponent): Remove
	deprecated/no longer needed routines.
	* trans.h: Remove unused decls.

libgfortran/ChangeLog:

	* caf/libcaf.h (_gfortran_caf_get): Removed because deprecated.
	(_gfortran_caf_send): Same.
	(_gfortran_caf_sendget): Same.
	(_gfortran_caf_send_by_ref): Same.
	* caf/single.c (assign_char4_from_char1): Same.
	(assign_char1_from_char4): Same.
	(convert_type): Same.
	(defined): Same.
	(_gfortran_caf_get): Same.
	(_gfortran_caf_send): Same.
	(_gfortran_caf_sendget): Same.
	(copy_data): Same.
	(get_for_ref): Same.
	(_gfortran_caf_get_by_ref): Same.
	(send_by_ref): Same.
	(_gfortran_caf_send_by_ref): Same.
	(_gfortran_caf_sendget_by_ref): Same.
This commit is contained in:
Andre Vehreschild 2025-02-07 12:09:53 +01:00
parent 8bf0ee8d62
commit d324467544
6 changed files with 0 additions and 3993 deletions

View File

@ -4205,12 +4205,6 @@ future implementation of teams. It is about to change without further notice.
* _gfortran_caf_register_accessor:: Register an accessor for remote access
* _gfortran_caf_register_accessors_finish:: Finish registering accessor functions
* _gfortran_caf_get_remote_function_index:: Get the index of an accessor
* _gfortran_caf_is_present:: Query whether an allocatable or pointer component in a derived type coarray is allocated
* _gfortran_caf_send:: Sending data from a local image to a remote image
* _gfortran_caf_get:: Getting data from a remote image
* _gfortran_caf_sendget:: Sending data between remote images
* _gfortran_caf_send_by_ref:: Sending data from a local image to a remote image using enhanced references
* _gfortran_caf_get_by_ref:: Getting data from a remote image using enhanced references
* _gfortran_caf_get_from_remote:: Getting data from a remote image using a remote side accessor
* _gfortran_caf_is_present_on_remote:: Check that a coarray or a part of it is allocated on the remote image
* _gfortran_caf_send_to_remote:: Send data to a remote image using a remote side accessor to store it
@ -4649,335 +4643,6 @@ message, when the hash could not be found.
@end table
@node _gfortran_caf_is_present
@subsection @code{_gfortran_caf_is_present} --- Query whether an allocatable or pointer component in a derived type coarray is allocated
@cindex Coarray, _gfortran_caf_is_present
@table @asis
@item @emph{Description}:
Used to query the coarray library whether an allocatable component in a derived
type coarray is allocated on a remote image.
@item @emph{Syntax}:
@code{void _gfortran_caf_is_present (caf_token_t token, int image_index,
gfc_reference_t *ref)}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{token} @tab An opaque pointer identifying the coarray.
@item @var{image_index} @tab The ID of the remote image; must be a positive
number.
@item @var{ref} @tab A chain of references to address the allocatable or
pointer component in the derived type coarray. The object reference needs to be
a scalar or a full array reference, respectively.
@end multitable
@end table
@node _gfortran_caf_send
@subsection @code{_gfortran_caf_send} --- Sending data from a local image to a remote image
@cindex Coarray, _gfortran_caf_send
@table @asis
@item @emph{Description}:
Called to send a scalar, an array section or a whole array from a local
to a remote image identified by the image_index.
@item @emph{Syntax}:
@code{void _gfortran_caf_send (caf_token_t token, size_t offset,
int image_index, gfc_descriptor_t *dest, caf_vector_t *dst_vector,
gfc_descriptor_t *src, int dst_kind, int src_kind, bool may_require_tmp,
int *stat)}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{token} @tab intent(in) An opaque pointer identifying the coarray.
@item @var{offset} @tab intent(in) The number of bytes the actual data is
shifted compared to the base address of the coarray.
@item @var{image_index} @tab intent(in) The ID of the remote image; must be a
positive number.
@item @var{dest} @tab intent(in) Array descriptor for the remote image for the
bounds and the size. The @code{base_addr} shall not be accessed.
@item @var{dst_vector} @tab intent(in) If not NULL, it contains the vector
subscript of the destination array; the values are relative to the dimension
triplet of the dest argument.
@item @var{src} @tab intent(in) Array descriptor of the local array to be
transferred to the remote image
@item @var{dst_kind} @tab intent(in) Kind of the destination argument
@item @var{src_kind} @tab intent(in) Kind of the source argument
@item @var{may_require_tmp} @tab intent(in) The variable is @code{false} when
it is known at compile time that the @var{dest} and @var{src} either cannot
overlap or overlap (fully or partially) such that walking @var{src} and
@var{dest} in elementwise order (honoring the stride value) does not
lead to wrong results. Otherwise, the value is @code{true}.
@item @var{stat} @tab intent(out) when non-NULL give the result of the
operation, i.e., zero on success and nonzero on error. When NULL and an error
occurs, then an error message is printed and the program is terminated.
@end multitable
@item @emph{NOTES}
It is permitted to have @var{image_index} equal the current image; the memory
of the send-to and the send-from might (partially) overlap in that case. The
implementation has to take care that it handles this case, e.g. using
@code{memmove} which handles (partially) overlapping memory. If
@var{may_require_tmp} is true, the library might additionally create a
temporary variable, unless additional checks show that this is not required
(e.g. because walking backward is possible or because both arrays are
contiguous and @code{memmove} takes care of overlap issues).
Note that the assignment of a scalar to an array is permitted. In addition,
the library has to handle numeric type conversion, and padding
and different character kinds for strings.
@end table
@node _gfortran_caf_get
@subsection @code{_gfortran_caf_get} --- Getting data from a remote image
@cindex Coarray, _gfortran_caf_get
@table @asis
@item @emph{Description}:
Called to get an array section or a whole array from a remote,
image identified by the image_index.
@item @emph{Syntax}:
@code{void _gfortran_caf_get (caf_token_t token, size_t offset,
int image_index, gfc_descriptor_t *src, caf_vector_t *src_vector,
gfc_descriptor_t *dest, int src_kind, int dst_kind, bool may_require_tmp,
int *stat)}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{token} @tab intent(in) An opaque pointer identifying the coarray.
@item @var{offset} @tab intent(in) The number of bytes the actual data is
shifted compared to the base address of the coarray.
@item @var{image_index} @tab intent(in) The ID of the remote image; must be a
positive number.
@item @var{dest} @tab intent(out) Array descriptor of the local array to store
the data retrieved from the remote image
@item @var{src} @tab intent(in) Array descriptor for the remote image for the
bounds and the size. The @code{base_addr} shall not be accessed.
@item @var{src_vector} @tab intent(in) If not NULL, it contains the vector
subscript of the source array; the values are relative to the dimension
triplet of the @var{src} argument.
@item @var{dst_kind} @tab intent(in) Kind of the destination argument
@item @var{src_kind} @tab intent(in) Kind of the source argument
@item @var{may_require_tmp} @tab intent(in) The variable is @code{false} when
it is known at compile time that the @var{dest} and @var{src} either cannot
overlap or overlap (fully or partially) such that walking @var{src} and
@var{dest} in elementwise order (honoring the stride value) does not
lead to wrong results. Otherwise, the value is @code{true}.
@item @var{stat} @tab intent(out) When non-NULL give the result of the
operation, i.e., zero on success and nonzero on error. When NULL and an error
occurs, then an error message is printed and the program is terminated.
@end multitable
@item @emph{NOTES}
It is permitted to have @var{image_index} equal the current image; the memory of
the send-to and the send-from might (partially) overlap in that case. The
implementation has to take care that it handles this case, e.g. using
@code{memmove} which handles (partially) overlapping memory. If
@var{may_require_tmp} is true, the library might additionally create a
temporary variable, unless additional checks show that this is not required
(e.g. because walking backward is possible or because both arrays are
contiguous and @code{memmove} takes care of overlap issues).
Note that the library has to handle numeric-type conversion and for strings,
padding and different character kinds.
@end table
@node _gfortran_caf_sendget
@subsection @code{_gfortran_caf_sendget} --- Sending data between remote images
@cindex Coarray, _gfortran_caf_sendget
@table @asis
@item @emph{Description}:
Called to send a scalar, an array section or a whole array from a remote image
identified by the @var{src_image_index} to a remote image identified by the
@var{dst_image_index}.
@item @emph{Syntax}:
@code{void _gfortran_caf_sendget (caf_token_t dst_token, size_t dst_offset,
int dst_image_index, gfc_descriptor_t *dest, caf_vector_t *dst_vector,
caf_token_t src_token, size_t src_offset, int src_image_index,
gfc_descriptor_t *src, caf_vector_t *src_vector, int dst_kind, int src_kind,
bool may_require_tmp, int *stat)}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{dst_token} @tab intent(in) An opaque pointer identifying the
destination coarray.
@item @var{dst_offset} @tab intent(in) The number of bytes the actual data
is shifted compared to the base address of the destination coarray.
@item @var{dst_image_index} @tab intent(in) The ID of the destination remote
image; must be a positive number.
@item @var{dest} @tab intent(in) Array descriptor for the destination
remote image for the bounds and the size. The @code{base_addr} shall not be
accessed.
@item @var{dst_vector} @tab intent(int) If not NULL, it contains the vector
subscript of the destination array; the values are relative to the dimension
triplet of the @var{dest} argument.
@item @var{src_token} @tab intent(in) An opaque pointer identifying the source
coarray.
@item @var{src_offset} @tab intent(in) The number of bytes the actual data
is shifted compared to the base address of the source coarray.
@item @var{src_image_index} @tab intent(in) The ID of the source remote image;
must be a positive number.
@item @var{src} @tab intent(in) Array descriptor of the local array to be
transferred to the remote image.
@item @var{src_vector} @tab intent(in) Array descriptor of the local array to
be transferred to the remote image
@item @var{dst_kind} @tab intent(in) Kind of the destination argument
@item @var{src_kind} @tab intent(in) Kind of the source argument
@item @var{may_require_tmp} @tab intent(in) The variable is @code{false} when
it is known at compile time that the @var{dest} and @var{src} either cannot
overlap or overlap (fully or partially) such that walking @var{src} and
@var{dest} in elementwise order (honoring the stride value) does not
lead to wrong results. Otherwise, the value is @code{true}.
@item @var{stat} @tab intent(out) when non-NULL give the result of the
operation, i.e., zero on success and nonzero on error. When NULL and an error
occurs, then an error message is printed and the program is terminated.
@end multitable
@item @emph{NOTES}
It is permitted to have the same image index for both @var{src_image_index} and
@var{dst_image_index}; the memory of the send-to and the send-from might
(partially) overlap in that case. The implementation has to take care that it
handles this case, e.g. using @code{memmove} which handles (partially)
overlapping memory. If @var{may_require_tmp} is true, the library
might additionally create a temporary variable, unless additional checks show
that this is not required (e.g. because walking backward is possible or because
both arrays are contiguous and @code{memmove} takes care of overlap issues).
Note that the assignment of a scalar to an array is permitted. In addition,
the library has to handle numeric-type conversion and for strings, padding and
different character kinds.
@end table
@node _gfortran_caf_send_by_ref
@subsection @code{_gfortran_caf_send_by_ref} --- Sending data from a local image to a remote image with enhanced referencing options
@cindex Coarray, _gfortran_caf_send_by_ref
@table @asis
@item @emph{Description}:
Called to send a scalar, an array section or a whole array from a local to a
remote image identified by the @var{image_index}.
@item @emph{Syntax}:
@code{void _gfortran_caf_send_by_ref (caf_token_t token, int image_index,
gfc_descriptor_t *src, caf_reference_t *refs, int dst_kind, int src_kind,
bool may_require_tmp, bool dst_reallocatable, int *stat, int dst_type)}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{token} @tab intent(in) An opaque pointer identifying the coarray.
@item @var{image_index} @tab intent(in) The ID of the remote image; must be a
positive number.
@item @var{src} @tab intent(in) Array descriptor of the local array to be
transferred to the remote image
@item @var{refs} @tab intent(in) The references on the remote array to store
the data given by src. Guaranteed to have at least one entry.
@item @var{dst_kind} @tab intent(in) Kind of the destination argument
@item @var{src_kind} @tab intent(in) Kind of the source argument
@item @var{may_require_tmp} @tab intent(in) The variable is @code{false} when
it is known at compile time that the @var{dest} and @var{src} either cannot
overlap or overlap (fully or partially) such that walking @var{src} and
@var{dest} in elementwise order (honoring the stride value) does not
lead to wrong results. Otherwise, the value is @code{true}.
@item @var{dst_reallocatable} @tab intent(in) Set when the destination is of
allocatable or pointer type and the refs allow reallocation, i.e., the ref
is a full array or component ref.
@item @var{stat} @tab intent(out) When non-@code{NULL} give the result of the
operation, i.e., zero on success and nonzero on error. When @code{NULL} and
an error occurs, then an error message is printed and the program is terminated.
@item @var{dst_type} @tab intent(in) Give the type of the destination. When
the destination is not an array, than the precise type, e.g. of a component in
a derived type, is not known, but provided here.
@end multitable
@item @emph{NOTES}
It is permitted to have @var{image_index} equal the current image; the memory of
the send-to and the send-from might (partially) overlap in that case. The
implementation has to take care that it handles this case, e.g. using
@code{memmove} which handles (partially) overlapping memory. If
@var{may_require_tmp} is true, the library might additionally create a
temporary variable, unless additional checks show that this is not required
(e.g. because walking backward is possible or because both arrays are
contiguous and @code{memmove} takes care of overlap issues).
Note that the assignment of a scalar to an array is permitted. In addition,
the library has to handle numeric-type conversion and for strings, padding
and different character kinds.
Because of the more complicated references possible some operations may be
unsupported by certain libraries. The library is expected to issue a precise
error message why the operation is not permitted.
@end table
@node _gfortran_caf_get_by_ref
@subsection @code{_gfortran_caf_get_by_ref} --- Getting data from a remote image using enhanced references
@cindex Coarray, _gfortran_caf_get_by_ref
@table @asis
@item @emph{Description}:
Called to get a scalar, an array section or a whole array from a remote image
identified by the @var{image_index}.
@item @emph{Syntax}:
@code{void _gfortran_caf_get_by_ref (caf_token_t token, int image_index,
caf_reference_t *refs, gfc_descriptor_t *dst, int dst_kind, int src_kind,
bool may_require_tmp, bool dst_reallocatable, int *stat, int src_type)}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{token} @tab intent(in) An opaque pointer identifying the coarray.
@item @var{image_index} @tab intent(in) The ID of the remote image; must be a
positive number.
@item @var{refs} @tab intent(in) The references to apply to the remote structure
to get the data.
@item @var{dst} @tab intent(in) Array descriptor of the local array to store
the data transferred from the remote image. May be reallocated where needed
and when @var{DST_REALLOCATABLE} allows it.
@item @var{dst_kind} @tab intent(in) Kind of the destination argument
@item @var{src_kind} @tab intent(in) Kind of the source argument
@item @var{may_require_tmp} @tab intent(in) The variable is @code{false} when
it is known at compile time that the @var{dest} and @var{src} either cannot
overlap or overlap (fully or partially) such that walking @var{src} and
@var{dest} in elementwise order (honoring the stride value) does not
lead to wrong results. Otherwise, the value is @code{true}.
@item @var{dst_reallocatable} @tab intent(in) Set when @var{DST} is of
allocatable or pointer type and its refs allow reallocation, i.e., the full
array or a component is referenced.
@item @var{stat} @tab intent(out) When non-@code{NULL} give the result of the
operation, i.e., zero on success and nonzero on error. When @code{NULL} and an
error occurs, then an error message is printed and the program is terminated.
@item @var{src_type} @tab intent(in) Give the type of the source. When the
source is not an array, than the precise type, e.g. of a component in a
derived type, is not known, but provided here.
@end multitable
@item @emph{NOTES}
It is permitted to have @code{image_index} equal the current image; the memory
of the send-to and the send-from might (partially) overlap in that case. The
implementation has to take care that it handles this case, e.g. using
@code{memmove} which handles (partially) overlapping memory. If
@var{may_require_tmp} is true, the library might additionally create a
temporary variable, unless additional checks show that this is not required
(e.g. because walking backward is possible or because both arrays are
contiguous and @code{memmove} takes care of overlap issues).
Note that the library has to handle numeric-type conversion and for strings,
padding and different character kinds.
Because of the more complicated references possible some operations may be
unsupported by certain libraries. The library is expected to issue a precise
error message why the operation is not permitted.
@end table
@node _gfortran_caf_get_from_remote
@subsection @code{_gfortran_caf_get_from_remote} --- Getting data from a remote image using a remote side accessor
@cindex Coarray, _gfortran_caf_get_from_remote

View File

@ -135,22 +135,12 @@ tree gfor_fndecl_caf_this_image;
tree gfor_fndecl_caf_num_images;
tree gfor_fndecl_caf_register;
tree gfor_fndecl_caf_deregister;
// Deprecate start
tree gfor_fndecl_caf_get;
tree gfor_fndecl_caf_send;
tree gfor_fndecl_caf_sendget;
tree gfor_fndecl_caf_send_by_ref;
tree gfor_fndecl_caf_sendget_by_ref;
// Deprecate end
tree gfor_fndecl_caf_register_accessor;
tree gfor_fndecl_caf_register_accessors_finish;
tree gfor_fndecl_caf_get_remote_function_index;
tree gfor_fndecl_caf_get_from_remote;
tree gfor_fndecl_caf_send_to_remote;
tree gfor_fndecl_caf_transfer_between_remotes;
tree gfor_fndecl_caf_sync_all;
tree gfor_fndecl_caf_sync_memory;
tree gfor_fndecl_caf_sync_images;
@ -4073,45 +4063,6 @@ gfc_build_builtin_function_decls (void)
ppvoid_type_node, integer_type_node, pint_type, pchar_type_node,
size_type_node);
// Deprecate start
gfor_fndecl_caf_get = gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX("caf_get")), ". r . . r r w . . . w ",
void_type_node, 10,
pvoid_type_node, size_type_node, integer_type_node, pvoid_type_node,
pvoid_type_node, pvoid_type_node, integer_type_node, integer_type_node,
boolean_type_node, pint_type);
gfor_fndecl_caf_send = gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX("caf_send")), ". r . . w r r . . . w ",
void_type_node, 11,
pvoid_type_node, size_type_node, integer_type_node, pvoid_type_node,
pvoid_type_node, pvoid_type_node, integer_type_node, integer_type_node,
boolean_type_node, pint_type, pvoid_type_node);
gfor_fndecl_caf_sendget = gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX("caf_sendget")), ". r . . w r r . . r r . . . w ",
void_type_node, 14, pvoid_type_node, size_type_node, integer_type_node,
pvoid_type_node, pvoid_type_node, pvoid_type_node, size_type_node,
integer_type_node, pvoid_type_node, pvoid_type_node, integer_type_node,
integer_type_node, boolean_type_node, integer_type_node);
gfor_fndecl_caf_send_by_ref = gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX("caf_send_by_ref")), ". r . r r . . . . w . ",
void_type_node, 10, pvoid_type_node, integer_type_node, pvoid_type_node,
pvoid_type_node, integer_type_node, integer_type_node,
boolean_type_node, boolean_type_node, pint_type, integer_type_node);
gfor_fndecl_caf_sendget_by_ref
= gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX("caf_sendget_by_ref")),
". r . r r . r . . . w w . . ",
void_type_node, 13, pvoid_type_node, integer_type_node,
pvoid_type_node, pvoid_type_node, integer_type_node,
pvoid_type_node, integer_type_node, integer_type_node,
boolean_type_node, pint_type, pint_type, integer_type_node,
integer_type_node);
// Deprecate end
gfor_fndecl_caf_register_accessor
= gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX ("caf_register_accessor")), ". r r ",

File diff suppressed because it is too large Load Diff

View File

@ -883,22 +883,12 @@ extern GTY(()) tree gfor_fndecl_caf_this_image;
extern GTY(()) tree gfor_fndecl_caf_num_images;
extern GTY(()) tree gfor_fndecl_caf_register;
extern GTY(()) tree gfor_fndecl_caf_deregister;
// Deprecate start
extern GTY(()) tree gfor_fndecl_caf_get;
extern GTY(()) tree gfor_fndecl_caf_send;
extern GTY(()) tree gfor_fndecl_caf_sendget;
extern GTY(()) tree gfor_fndecl_caf_send_by_ref;
extern GTY(()) tree gfor_fndecl_caf_sendget_by_ref;
// Deprecate end
extern GTY(()) tree gfor_fndecl_caf_register_accessor;
extern GTY(()) tree gfor_fndecl_caf_register_accessors_finish;
extern GTY(()) tree gfor_fndecl_caf_get_remote_function_index;
extern GTY(()) tree gfor_fndecl_caf_get_from_remote;
extern GTY(()) tree gfor_fndecl_caf_send_to_remote;
extern GTY(()) tree gfor_fndecl_caf_transfer_between_remotes;
extern GTY(()) tree gfor_fndecl_caf_sync_all;
extern GTY(()) tree gfor_fndecl_caf_sync_memory;
extern GTY(()) tree gfor_fndecl_caf_sync_images;

View File

@ -89,98 +89,6 @@ typedef struct caf_static_t {
}
caf_static_t;
/* When there is a vector subscript in this dimension, nvec == 0, otherwise,
lower_bound, upper_bound, stride contains the bounds relative to the declared
bounds; kind denotes the integer kind of the elements of vector[]. */
typedef struct caf_vector_t {
size_t nvec;
union {
struct {
void *vector;
int kind;
} v;
struct {
ptrdiff_t lower_bound, upper_bound, stride;
} triplet;
} u;
}
caf_vector_t;
typedef enum caf_ref_type_t {
/* Reference a component of a derived type, either regular one or an
allocatable or pointer type. For regular ones idx in caf_reference_t is
set to -1. */
CAF_REF_COMPONENT,
/* Reference an allocatable array. */
CAF_REF_ARRAY,
/* Reference a non-allocatable/non-pointer array. */
CAF_REF_STATIC_ARRAY
} caf_ref_type_t;
typedef enum caf_array_ref_t {
/* No array ref. This terminates the array ref. */
CAF_ARR_REF_NONE = 0,
/* Reference array elements given by a vector. Only for this mode
caf_reference_t.u.a.dim[i].v is valid. */
CAF_ARR_REF_VECTOR,
/* A full array ref (:). */
CAF_ARR_REF_FULL,
/* Reference a range on elements given by start, end and stride. */
CAF_ARR_REF_RANGE,
/* Only a single item is referenced given in the start member. */
CAF_ARR_REF_SINGLE,
/* An array ref of the kind (i:), where i is an arbitrary valid index in the
array. The index i is given in the start member. */
CAF_ARR_REF_OPEN_END,
/* An array ref of the kind (:i), where the lower bound of the array ref
is given by the remote side. The index i is given in the end member. */
CAF_ARR_REF_OPEN_START
} caf_array_ref_t;
/* References to remote components of a derived type. */
typedef struct caf_reference_t {
/* A pointer to the next ref or NULL. */
struct caf_reference_t *next;
/* The type of the reference. */
/* caf_ref_type_t, replaced by int to allow specification in fortran FE. */
int type;
/* The size of an item referenced in bytes. I.e. in an array ref this is
the factor to advance the array pointer with to get to the next item.
For component refs this gives just the size of the element referenced. */
size_t item_size;
union {
struct {
/* The offset (in bytes) of the component in the derived type. */
ptrdiff_t offset;
/* The offset (in bytes) to the caf_token associated with this
component. NULL, when not allocatable/pointer ref. */
ptrdiff_t caf_token_offset;
} c;
struct {
/* The mode of the array ref. See CAF_ARR_REF_*. */
/* caf_array_ref_t, replaced by unsigend char to allow specification in
fortran FE. */
unsigned char mode[GFC_MAX_DIMENSIONS];
/* The type of a static array. Unset for array's with descriptors. */
int static_array_type;
/* Subscript refs (s) or vector refs (v). */
union {
struct {
/* The start and end boundary of the ref and the stride. */
index_type start, end, stride;
} s;
struct {
/* nvec entries of kind giving the elements to reference. */
void *vector;
/* The number of entries in vector. */
size_t nvec;
/* The integer kind used for the elements in vector. */
int kind;
} v;
} dim[GFC_MAX_DIMENSIONS];
} a;
} u;
} caf_reference_t;
void _gfortran_caf_init (int *, char ***);
void _gfortran_caf_finalize (void);
@ -213,26 +121,6 @@ void _gfortran_caf_co_max (gfc_descriptor_t *, int, int *, char *, int, size_t);
void _gfortran_caf_co_reduce (gfc_descriptor_t *, void* (*) (void *, void*),
int, int, int *, char *, int, size_t);
void _gfortran_caf_get (caf_token_t, size_t, int, gfc_descriptor_t *,
caf_vector_t *, gfc_descriptor_t *, int, int, bool,
int *);
void _gfortran_caf_send (caf_token_t, size_t, int, gfc_descriptor_t *,
caf_vector_t *, gfc_descriptor_t *, int, int, bool,
int *);
void _gfortran_caf_sendget (caf_token_t, size_t, int, gfc_descriptor_t *,
caf_vector_t *, caf_token_t, size_t, int,
gfc_descriptor_t *, caf_vector_t *, int, int, bool);
void _gfortran_caf_send_by_ref (caf_token_t token, int image_index,
gfc_descriptor_t *src, caf_reference_t *refs, int dst_kind,
int src_kind, bool may_require_tmp, bool dst_reallocatable, int *stat,
int dst_type);
void _gfortran_caf_sendget_by_ref (
caf_token_t dst_token, int dst_image_index, caf_reference_t *dst_refs,
caf_token_t src_token, int src_image_index, caf_reference_t *src_refs,
int dst_kind, int src_kind, bool may_require_tmp, int *dst_stat,
int *src_stat, int dst_type, int src_type);
void _gfortran_caf_register_accessor (
const int hash,
void (*accessor) (void *, const int *, void **, int32_t *, void *,

File diff suppressed because it is too large Load Diff