[Bug fortran/106731] New: ICE on automatic array of derived type with DTIO
federico.perini at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Aug 24 07:44:49 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106731
Bug ID: 106731
Summary: ICE on automatic array of derived type with DTIO
Product: gcc
Version: 12.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: federico.perini at gmail dot com
Target Milestone: ---
A derived type that has user-defined I/O causes ICE on all gfortran versions 7
to 12.1.0, whenever it's being used as an automatic object.
The error is at
63 | type(t) :: automatic(n)
| 1
internal compiler error: in gfc_trans_auto_array_allocation, at
fortran/trans-array.cc:6617
This does not happen if the derived type is allocated.
Here's the simplest example:
module causes_ice
implicit none
type :: t
real(8) :: x
contains
procedure, private :: write_formatted
generic :: write(formatted) => write_formatted
end type t
contains
subroutine write_formatted(this, unit, iotype, v_list, iostat, iomsg)
class(t), intent(in) :: this
integer, intent(in) :: unit
character(*), intent(in) :: iotype
integer, intent(in) :: v_list(:)
integer, intent(out) :: iostat
character(*), intent(inout) :: iomsg
write(unit, '(a)', iostat=iostat, iomsg=iomsg) 'dummy'
end subroutine write_formatted
end module causes_ice
module use_t
use causes_ice
implicit none
public :: automatic_alloc
contains
subroutine automatic_alloc(n)
integer, intent(in) :: n
! Automatic array: ICE!
type(t) :: automatic(n)
! Allocatable: works
type(t), allocatable :: alloc(:)
allocate(alloc(n))
! Do anything
print *, 'n=',n,automatic(n)%x
end subroutine automatic_alloc
end module use_t
program test
use use_t
call automatic_alloc(1)
end program test
I could find other DTIO-related bugs, but none seemed related with the
allocation type.
More information about the Gcc-bugs
mailing list