[Bug fortran/106047] ICE in structure_alloc_comps, at fortran/trans-array.cc:9574
gscfq@t-online.de
gcc-bugzilla@gcc.gnu.org
Thu Jun 23 15:41:47 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106047
--- Comment #2 from G. Steinmetz <gscfq@t-online.de> ---
Hmm, exploring some more test cases;
z2 gives same ICE, z3 prints 128, z4 gives an error, z5 is ok/works :
$ cat z2.f90
program p
type t
character(:), allocatable :: c
end type
type(t) :: x ! without = t()
integer, parameter :: n = storage_size(x)
end
$ cat z3.f90
program p
type t
character(:), allocatable :: c
end type
type(t), parameter :: x = t() ! that is t(null())
integer :: n = storage_size(x)
print *, n
end
$ cat z4.f90
program p
type t
character(:), allocatable :: c
end type
type(t), parameter :: x = t('abc') ! instead of t(null())
integer :: n = storage_size(x)
print *, n
end
$ cat z5.f90
program p
type t
character(:), allocatable :: c
end type
type(t) :: x
integer :: n
n = storage_size(x)
print *, n
end
---
Some examples without "type" :
$ cat zz1.f90
program p
character(:), allocatable :: c
integer :: n = storage_size(c)
print *, n
end
$ cat zz2.f90
program p
character(:), allocatable :: c
integer, parameter :: n = storage_size(c)
print *, n
end
$ cat zz3.f90
program p
character(:), allocatable :: c
print *, storage_size(c)
end
$ gfortran-13-20220619 -c zz1.f90
zz1.f90:3:31:
3 | integer :: n = storage_size(c)
| 1
Error: Parameter 'c' at (1) has not been declared or is a variable, which does
not reduce to a constant expression
$
$ gfortran-13-20220619 -c zz2.f90
zz2.f90:3:42:
3 | integer, parameter :: n = storage_size(c)
| 1
Error: Parameter 'c' at (1) has not been declared or is a variable, which does
not reduce to a constant expression
$
$ gfortran-13-20220619 zz3.f90 ; a.out
0
$
Via Compiler Explorer :
Latest ifort/ifx indeed compiles z1/2/3/5, rejects z4 with an error (ok).
Latest ifort/ifx rejects zz1/zz2 with an error, accepts zz3 and prints 0.
More information about the Gcc-bugs
mailing list