Fortran: Add transfer_between_remotes [PR107635]
Add the last missing coarray data manipulation routine using remote accessors. gcc/fortran/ChangeLog: PR fortran/107635 * coarray.cc (rewrite_caf_send): Rewrite to transfer_between_remotes when both sides of the assignment have a coarray. (coindexed_code_callback): Prevent duplicate rewrite. * gfortran.texi: Add documentation for transfer_between_remotes. * intrinsic.cc (add_subroutines): Add intrinsic symbol for caf_sendget to allow easy rewrite to transfer_between_remotes. * trans-decl.cc (gfc_build_builtin_function_decls): Add prototype for transfer_between_remotes. * trans-intrinsic.cc (conv_caf_vector_subscript_elem): Mark as deprecated. (conv_caf_vector_subscript): Same. (compute_component_offset): Same. (conv_expr_ref_to_caf_ref): Same. (conv_stat_and_team): Extract stat and team from expr. (gfc_conv_intrinsic_caf_get): Use conv_stat_and_team. (conv_caf_send_to_remote): Same. (has_ref_after_cafref): Mark as deprecated. (conv_caf_sendget): Translate to transfer_between_remotes. * trans.h: Add prototype for transfer_between_remotes. libgfortran/ChangeLog: * caf/libcaf.h: Add prototype for transfer_between_remotes. * caf/single.c: Implement transfer_between_remotes. gcc/testsuite/ChangeLog: * gfortran.dg/coarray_lib_comm_1.f90: Fix up scan_trees.
Showing
- gcc/fortran/coarray.cc 25 additions, 7 deletionsgcc/fortran/coarray.cc
- gcc/fortran/gfortran.texi 106 additions, 0 deletionsgcc/fortran/gfortran.texi
- gcc/fortran/intrinsic.cc 4 additions, 0 deletionsgcc/fortran/intrinsic.cc
- gcc/fortran/trans-decl.cc 13 additions, 2 deletionsgcc/fortran/trans-decl.cc
- gcc/fortran/trans-intrinsic.cc 1284 additions, 1062 deletionsgcc/fortran/trans-intrinsic.cc
- gcc/fortran/trans.h 1 addition, 0 deletionsgcc/fortran/trans.h
- gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 3 additions, 1 deletiongcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
- libgfortran/caf/libcaf.h 12 additions, 0 deletionslibgfortran/caf/libcaf.h
- libgfortran/caf/single.c 69 additions, 0 deletionslibgfortran/caf/single.c
Loading
Please register or sign in to comment