https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107375
Bug ID: 107375 Summary: CFI_cdesc_t incorrectly reports non-interoperable C structure as such Product: gcc Version: 12.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: jeff.science at gmail dot com Target Milestone: --- Interoperable C structs are not permitted to contain allocatable members, among other things. The compiler should report that types containing allocatable members are CFI_type_other, not CFI_type_struct. I was not sure if the Fortran code was illegal or if the CFI_cdesc_t was populated incorrectly, but another member of WG5 said it was the latter. % gcc-12 -g -std=c11 -c foo.c -o foo.o % gfortran-12 -g -std=f2018 class.F90 foo.o -o class.x % ./class.x CFI_cdesc_t.type = interoperable C structure ==> foo.c <== #include <stdio.h> #include <stdlib.h> #include "ISO_Fortran_binding.h" char * get_type(CFI_type_t t) { switch(t) { case CFI_type_cptr : return "void *"; break; case CFI_type_struct : return "interoperable C structure"; break; case CFI_type_other : return "Not otherwise specified"; break; default : abort(); } } void foo(CFI_cdesc_t * d) { printf("CFI_cdesc_t.type = %s\n", get_type(d->type)); } ==> class.F90 <== module m type :: t integer :: i double precision :: d integer :: j(10) real :: r(100) real, allocatable :: z(:) end type t interface subroutine foo(t) bind(C) implicit none type(*), dimension(..) :: t end subroutine foo end interface end module m program main use m implicit none type(t) :: x call foo(x) end program main % gfortran-12 -v Using built-in specs. COLLECT_GCC=gfortran-12 COLLECT_LTO_WRAPPER=/opt/homebrew/Cellar/gcc/12.2.0/bin/../libexec/gcc/aarch64-apple-darwin21/12/lto-wrapper Target: aarch64-apple-darwin21 Configured with: ../configure --prefix=/opt/homebrew/opt/gcc --libdir=/opt/homebrew/opt/gcc/lib/gcc/current --disable-nls --enable-checking=release --with-gcc-major-version-only --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-12 --with-gmp=/opt/homebrew/opt/gmp --with-mpfr=/opt/homebrew/opt/mpfr --with-mpc=/opt/homebrew/opt/libmpc --with-isl=/opt/homebrew/opt/isl --with-zstd=/opt/homebrew/opt/zstd --with-pkgversion='Homebrew GCC 12.2.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --with-system-zlib --build=aarch64-apple-darwin21 --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Homebrew GCC 12.2.0)