]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fortran: Implement f_c_string function.
authorSteven G. Kargl <kargls@comcast.net>
Sun, 29 Dec 2024 22:19:18 +0000 (14:19 -0800)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 30 Dec 2024 17:41:03 +0000 (09:41 -0800)
commitefc0981077a70c4de4596f682c4aeade07ec2f17
treef73c4968cc8eea464cf2c62c8256ea21209faa6e
parent64d31343d4676d8ceef9232dcd33824bc2eff330
Fortran: Implement f_c_string function.

Fortran 2023 has added the new intrinsic function F_C_STRING to
convert fortran strings of default character kind to a null
terminated C string.

Contributions from Steve Kargl, Harald Anlauf, FX Coudert, Mikael Morin,
and Jerry DeLisle.

PR fortran/117643

gcc/fortran/ChangeLog:

* check.cc (gfc_check_f_c_string): Check arguments of f_c_string().
* gfortran.h (enum gfc_isym_id): New symbol GFC_ISYM_F_C_STRING.
* intrinsic.cc (add_functions): Add the ISO C Binding routine f_c_string().
Wrap nearby long line to less than 80 characters.
* intrinsic.h (gfc_check_f_c_string): Prototype for gfc_check_f_c_string().
* iso-c-binding.def (NAMED_FUNCTION): Declare for ISO C Binding
routine f_c_string().
* primary.cc (gfc_match_rvalue): Fix comment that has been untrue since 2011.
Add ISOCBINDING_F_C_STRING to conditional.
* trans-intrinsic.cc (conv_trim): Specialized version of trim() for
f_c_string().
(gfc_conv_intrinsic_function): Use GFC_ISYM_F_C_STRING to trigger in-lining.

gcc/testsuite/ChangeLog:

* gfortran.dg/f_c_string1.f90: New test.
* gfortran.dg/f_c_string2.f90: New test.
gcc/fortran/check.cc
gcc/fortran/gfortran.h
gcc/fortran/intrinsic.cc
gcc/fortran/intrinsic.h
gcc/fortran/iso-c-binding.def
gcc/fortran/primary.cc
gcc/fortran/trans-intrinsic.cc
gcc/testsuite/gfortran.dg/f_c_string1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/f_c_string2.f90 [new file with mode: 0644]