aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.cc
diff options
context:
space:
mode:
authorAndre Vehreschild <vehre@gcc.gnu.org>2025-01-22 15:12:29 +0100
committerAndre Vehreschild <vehre@gcc.gnu.org>2025-02-20 10:32:21 +0100
commit15847252648ede9d2ad9eea398b7b870f62a2b30 (patch)
tree3490bf9148fb70ad24748ff0b7af082f30d04e38 /gcc/fortran/trans-decl.cc
parentabbfeb2ecbb5e90aa5d68e489ac283348ee6b8d5 (diff)
downloadgcc-15847252648ede9d2ad9eea398b7b870f62a2b30.zip
gcc-15847252648ede9d2ad9eea398b7b870f62a2b30.tar.gz
gcc-15847252648ede9d2ad9eea398b7b870f62a2b30.tar.bz2
Fortran: Add caf_is_present_on_remote. [PR107635]
Replace caf_is_present by caf_is_present_on_remote which is using a dedicated callback for each object to test on the remote image. gcc/fortran/ChangeLog: PR fortran/107635 * coarray.cc (create_allocated_callback): Add creating remote side procedure for checking allocation status of coarray. (rewrite_caf_allocated): Rewrite ALLOCATED on coarray to use caf routine. (coindexed_expr_callback): Exempt caf_is_present_on_remote from being rewritten again. * gfortran.h (enum gfc_isym_id): Add caf_is_present_on_remote id. * gfortran.texi: Add documentation for caf_is_present_on_remote. * intrinsic.cc (add_functions): Add caf_is_present_on_remote symbol. * trans-decl.cc (gfc_build_builtin_function_decls): Define interface of caf_is_present_on_remote. * trans-intrinsic.cc (gfc_conv_intrinsic_caf_is_present_remote): Translate caf_is_present_on_remote. (trans_caf_is_present): Remove. (caf_this_image_ref): Remove. (gfc_conv_allocated): Take out coarray treatment, because that is rewritten to caf_is_present_on_remote now. (gfc_conv_intrinsic_function): Handle caf_is_present_on_remote calls. * trans.h: Add symbol for caf_is_present_on_remote and remove old one. libgfortran/ChangeLog: * caf/libcaf.h (_gfortran_caf_is_present_on_remote): Add new function. (_gfortran_caf_is_present): Remove deprecated one. * caf/single.c (struct accessor_hash_t): Add function ptr access for remote side call. (_gfortran_caf_is_present_on_remote): Added. (_gfortran_caf_is_present): Removed. gcc/testsuite/ChangeLog: * gfortran.dg/coarray/coarray_allocated.f90: Adapt to new method of checking on remote image. * gfortran.dg/coarray_lib_alloc_4.f90: Same.
Diffstat (limited to 'gcc/fortran/trans-decl.cc')
-rw-r--r--gcc/fortran/trans-decl.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
index 0a6b747..ab8ad15 100644
--- a/gcc/fortran/trans-decl.cc
+++ b/gcc/fortran/trans-decl.cc
@@ -180,7 +180,7 @@ tree gfor_fndecl_co_max;
tree gfor_fndecl_co_min;
tree gfor_fndecl_co_reduce;
tree gfor_fndecl_co_sum;
-tree gfor_fndecl_caf_is_present;
+tree gfor_fndecl_caf_is_present_on_remote;
tree gfor_fndecl_caf_random_init;
@@ -4300,10 +4300,11 @@ gfc_build_builtin_function_decls (void)
void_type_node, 5, pvoid_type_node, integer_type_node,
pint_type, pchar_type_node, size_type_node);
- gfor_fndecl_caf_is_present = gfc_build_library_function_decl_with_spec (
- get_identifier (PREFIX("caf_is_present")), ". r . r ",
- integer_type_node, 3, pvoid_type_node, integer_type_node,
- pvoid_type_node);
+ gfor_fndecl_caf_is_present_on_remote
+ = gfc_build_library_function_decl_with_spec (
+ get_identifier (PREFIX ("caf_is_present_on_remote")), ". r r r r r ",
+ integer_type_node, 5, pvoid_type_node, integer_type_node,
+ integer_type_node, pvoid_type_node, size_type_node);
gfor_fndecl_caf_random_init = gfc_build_library_function_decl (
get_identifier (PREFIX("caf_random_init")),