[Patch, fortran] PR fortran/100906/100907/100911/100914/100915/100916
José Rui Faustino de Sousa
jrfsousa@gmail.com
Sun Jun 13 18:36:04 GMT 2021
Hi All!
Proposed patch to:
Bug 100906 - Bind(c): failure handling character with len/=1
Bug 100907 - Bind(c): failure handling wide character
Bug 100911 - Bind(c): failure handling C_PTR
Bug 100914 - Bind(c): errors handling complex
Bug 100915 - Bind(c): failure handling C_FUNPTR
Bug 100916 - Bind(c): CFI_type_other unimplemented
Patch tested only on x86_64-pc-linux-gnu.
This patch deals with improving C interoperability.
The identification of type and kind is improved, support for C_PTR and
C_FUNPTR is introduced, non interoperability types are now properly
marked as CFI_type_other.
This patch partially depends on the patch: "PR
fortran/93308/93963/94327/94331/97046 problems raised by descriptor
handling"
Thank you very much.
Best regards,
José Rui
Fortran: Fixes to type and kind handling in ISO_Fortran_binding.
gcc/fortran/ChangeLog:
PR fortran/100907
PR fortran/100911
PR fortran/100915
PR fortran/100916
* decl.c (gfc_verify_c_interop): add missing C_PTR and C_FUNPTR as
C interop types.
* trans-array.c (gfc_conv_descriptor_type): new function to access
the type field from the dtype descriptor field.
* trans-array.h (gfc_conv_descriptor_type): new prototype.
* trans-decl.c (convert_CFI_desc): add support for handlinng non C
interop wide character type.
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): add support for
CFI_type_other.
libgfortran/ChangeLog:
PR fortran/100906
PR fortran/100907
PR fortran/100911
PR fortran/100914
PR fortran/100915
PR fortran/100916
* ISO_Fortran_binding.h: adds helper macros to handle type and
kind conversion between CFI and GFC descriptors.
(_CFI_DECODE_TYPE): extract type from an encoded CFI type.
(_CFI_DECODE_KIND): extract kind from an encoded CFI type.
(_CFI_ENCODE_TYPE): encode a CFI type.
* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc):
improvements to the handling of type and kind information.
(gfc_desc_to_cfi_desc): improvements to the handling of type and
kind information.
gcc/testsuite/ChangeLog:
PR fortran/100906
PR fortran/100907
PR fortran/100911
PR fortran/100914
PR fortran/100915
PR fortran/100916
* gfortran.dg/ISO_Fortran_binding_1.f90:
* gfortran.dg/bind_c_array_params_2.f90:
* gfortran.dg/PR100906.c: New test.
* gfortran.dg/PR100906.f90: New test.
* gfortran.dg/PR100907.c: New test.
* gfortran.dg/PR100907.f90: New test.
* gfortran.dg/PR100911.c: New test.
* gfortran.dg/PR100911.f90: New test.
* gfortran.dg/PR100914.c: New test.
* gfortran.dg/PR100914.f90: New test.
* gfortran.dg/PR100915.c: New test.
* gfortran.dg/PR100915.f90: New test.
* gfortran.dg/PR100916.c: New test.
* gfortran.dg/PR100916.f90: New test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PRNEXT.patch
Type: text/x-patch
Size: 161810 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/fortran/attachments/20210613/df803161/attachment-0001.bin>
More information about the Fortran
mailing list