[PATCH] PR fortran/102368 - Failure to compile program using the C_SIZEOF function in ISO_C_BINDING
Bernhard Reutner-Fischer
rep.dot.nop@gmail.com
Fri Nov 12 20:18:52 GMT 2021
On Fri, 12 Nov 2021 18:39:48 +0100
Harald Anlauf via Fortran <fortran@gcc.gnu.org> wrote:
Sounds plausible.
Nits:
> diff --git a/gcc/testsuite/gfortran.dg/c_sizeof_7.f90 b/gcc/testsuite/gfortran.dg/c_sizeof_7.f90
> new file mode 100644
> index 00000000000..3cfa3371f72
> --- /dev/null
> +++ b/gcc/testsuite/gfortran.dg/c_sizeof_7.f90
[I'd name this .f08, no?]
> @@ -0,0 +1,13 @@
> +! { dg-do compile }
> +! { dg-options "-std=f2008 -fdump-tree-original" }
[and drop the -std]
> +! { dg-final { scan-tree-dump-times "_gfortran_stop_numeric" 0 "original" } }
[ ...-times 0 == scan-tree-dump-not ]
> +! PR fortran/102368
> +
> +program main
> + use, intrinsic :: iso_c_binding
> + implicit none
> + character(kind=c_char, len=*), parameter :: a = 'abc'
> + character(kind=c_char, len=8) :: b
character(kind=c_char, len=-42) :: c ! { dg-error "positive integer greater than 0" }
character(kind=c_char, len=-0) :: d ! { dg-error "positive integer greater than 0" }
character(kind=c_char, len=0) :: e ! { dg-error "positive integer greater than 0" }
character(kind=c_char, len=+0) :: f ! { dg-error "positive integer greater than 0" }
character(kind=c_char, len=0.0d) :: g ! { dg-error "positive integer greater than 0" }
character(kind=c_char, len=3.) :: h ! { dg-error "positive integer greater than 0" }
character(kind=c_char, len=.031415e2) :: i ! { dg-error "positive integer greater than 0" }
...
are caught elsewhere if one assumes that len should be a positive int > 0 (didn't look)
Also did not look if
character(kind=c_char, len=SELECTED_REAL_KIND(10)) :: j ! is that constant? Should it be?
> + if (c_sizeof (a) /= 3) stop 1
> + if (c_sizeof (b) /= 8) stop 2
indeed.
cheers,
> +end program main
> --
> 2.26.2
>
More information about the Gcc-patches
mailing list