diff options
author | Andre Vehreschild <vehre@gcc.gnu.org> | 2025-01-22 15:12:29 +0100 |
---|---|---|
committer | Andre Vehreschild <vehre@gcc.gnu.org> | 2025-02-20 10:32:21 +0100 |
commit | 15847252648ede9d2ad9eea398b7b870f62a2b30 (patch) | |
tree | 3490bf9148fb70ad24748ff0b7af082f30d04e38 /gcc/fortran/trans-decl.cc | |
parent | abbfeb2ecbb5e90aa5d68e489ac283348ee6b8d5 (diff) | |
download | gcc-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.cc | 11 |
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")), |