https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61831
--- Comment #28 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> Created attachment 33158 [details]
> Reduced test case, 140 lines
Further reduced to
program main
implicit none
type :: string_t
character(LEN=1), dimension(:), allocatable :: chars
end type string_t
type(string_t) :: prt_in
integer :: i
prt_in = string_t(["W"])
do i = 1, 16
print *, i
call process_configuration (new_prt_spec ([prt_in]))
end do
contains
elemental function new_prt_spec (name) result (prt_spec)
type(string_t), intent(in) :: name
type(string_t) :: prt_spec
end function new_prt_spec
subroutine process_configuration (prt_in)
type(string_t), dimension(:), intent(in) :: prt_in
end subroutine process_configuration
end program main
and it does not require iso_varying_string!-)
With 4.9.0 it counts up to 16, while with 4.9.1 and 4.10 with/without the patch
in comment 23 it gives
1
2
a.out(71763,0x7fff7bc1d310) malloc: *** error for object 0x7fe788e00000:
pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
...