mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 05:00:23 +08:00
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:
parent
8bf0ee8d62
commit
d324467544
@ -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
|
||||
|
@ -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
@ -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;
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user