Character length cleanup for Coarray Fortran library

Programming / Compilers / GCC - jb [138bc75d-0d04-0410-961f-82ee72b054a4] - 22 February 2018 09:44 EST

Following the change to use size_t for Fortran character lengths (PR 78534), this patch modifies the Coarray ABI in a similar way. The single-image implementation that is included in libgfortran is updated, but this needs corresponding work in the OpenCoarray library as well for multi-image support. I also fixed the types for the STOP and ERROR STOP implementation in libgfortran, as the calling of them is somewhat intertwined with the calling of the corresponding CAF functions. I'll send the OpenCoarray changes as a separate pull request to the OpenCoarrays repository.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2018-02-22 Janne Blomqvist

- gfortran.texi: Update Coarray API description.
- trans-decl.c (gfc_build_builtin_function_decls): Use size_t for character lengths, int for exit codes. (generate_coarray_sym_init): Use size_t for character length.
- trans-intrinsic.c (conv_co_collective): Likewise.
- trans-stmt.c (gfc_trans_lock_unlock): Likewise. (gfc_trans_event_post_wait): Likewise. (gfc_trans_sync): Likewise. (gfc_trans_stop): Use size_t for character lengths, int for exit codes.

libgfortran/ChangeLog:

2018-02-22 Janne Blomqvist

- libgfortran.h (stop_string): Use size_t for character length.
- runtime/stop.c (stop_string): Likewise. (error_stop_string): Likewise. (stop_numeric): Use int for exit code. (error_stop_numeric): Likewise.
- caf/libcaf.h: Remove stdint.h include. (_gfortran_caf_register): Use size_t for character length. (_gfortran_caf_deregister): Likewise. (_gfortran_caf_sync_all): Likewise. (_gfortran_caf_sync_memory): Likewise. (_gfortran_caf_sync_images): Likewise. (_gfortran_caf_stop_numeric): Use int for exit code. (_gfortran_caf_stop_str): Use size_t for character length. (_gfortran_caf_error_stop_str): Likewise. (_gfortran_caf_error_stop): Use int for exit code. (_gfortran_caf_co_broadcast): Use size_t for character length. (_gfortran_caf_co_sum): Likewise. (_gfortran_caf_co_min): Likewise. (_gfortran_caf_co_max): Likewise. (_gfortran_caf_co_reduce): Likewise. (_gfortran_caf_lock): Likewise. (_gfortran_caf_unlock): Likewise. (_gfortran_caf_event_post): Likewise. (_gfortran_caf_event_wait): Likewise.
- caf/mpi.c (_gfortran_caf_register): Update implementation to match prototype. (_gfortran_caf_deregister): Likewise. (_gfortran_caf_sync_all): Likewise. (_gfortran_caf_sync_images): Likewise. (_gfortran_caf_error_stop_str): Likewise. (_gfortran_caf_error_stop): Likewise.
- caf/single.c (caf_internal_error): Likewise. (_gfortran_caf_register): Likewise. (_gfortran_caf_deregister): Likewise. (_gfortran_caf_sync_all): Likewise. (_gfortran_caf_sync_memory): Likewise. (_gfortran_caf_sync_images): Likewise. (_gfortran_caf_stop_numeric): Likewise. (_gfortran_caf_stop_str): Likewise. (_gfortran_caf_error_stop_str): Likewise. (_gfortran_caf_error_stop): Likewise. (_gfortran_caf_co_broadcast): Likewise. (_gfortran_caf_co_sum): Likewise. (_gfortran_caf_co_min): Likewise. (_gfortran_caf_co_max): Likewise. (_gfortran_caf_co_reduce): Likewise. (_gfortran_caf_event_post): Likewise. (_gfortran_caf_event_wait): Likewise. (_gfortran_caf_lock): Likewise. (_gfortran_caf_unlock): Likewise.

5e04a38ad7a Character length cleanup for Coarray Fortran library
gcc/fortran/ChangeLog | 13 ++++++++++
gcc/fortran/gfortran.texi | 32 ++++++++++++-------------
gcc/fortran/trans-decl.c | 46 ++++++++++++++++++------------------
gcc/fortran/trans-intrinsic.c | 4 ++--
gcc/fortran/trans-stmt.c | 20 ++++++++--------
libgfortran/ChangeLog | 53 +++++++++++++++++++++++++++++++++++++++++
libgfortran/caf/libcaf.h | 37 ++++++++++++++---------------
libgfortran/caf/mpi.c | 28 +++++++++++-----------
libgfortran/caf/single.c | 55 ++++++++++++++++++++++---------------------
libgfortran/libgfortran.h | 2 +-
libgfortran/runtime/stop.c | 18 +++++++-------
11 files changed, 187 insertions(+), 121 deletions(-)

Upstream: gcc.gnu.org


  • Share