https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70070
--- Comment #11 from G. Steinmetz <gs...@t-online.de> --- A generator might be helpful for validations : $ cat generator_char_data.f90 program generator_char_data implicit none character(*), parameter :: fmt = '(*(a,i0))' integer :: i, j, nfile !- variant with longer span and steps ! integer, parameter :: n = 10**7 ! integer, parameter :: nstep = n/100 ! integer, parameter :: m = 10**7 ! integer, parameter :: mstep = m/100 integer, parameter :: n = 100 integer, parameter :: nstep = 1 integer, parameter :: m = 1000 integer, parameter :: mstep = 10 print *, 'n, nstep :', n, nstep print *, 'm, mstep :', m, mstep nfile = 0 do i = 1, n, nstep do j = i+1, i+m, mstep call test_variant (0, 1) call test_variant (1, 1) end do do j = 0, -m, -mstep call test_variant (0, 2) call test_variant (1, 2) end do end do print *, 'generated files :', nfile contains subroutine test_open character(16) :: chfile nfile = nfile + 1 write (chfile, fmt) 'z', nfile, '.f90' open (1, file=chfile) end subroutine test_close close (1) end subroutine test_variant (kdef, kvar) integer, intent(in) :: kdef, kvar call test_open write (1, fmt) 'program p' if ( kdef == 1 ) then write (1, fmt) ' integer :: i' end if write (1, fmt) ' character(', i, ') :: c' if ( kvar == 1 ) then write (1, fmt) ' data (c(i:i), i=1,', j, ') /', j, '*"c"/' else write (1, fmt) ' data (c(i:i), i=', j, ',', i, ') /', i-j+1, '*"c"/' end if write (1, fmt) 'end' call test_close end end Run it : gfortran generator_char_data.f90 ./a.out for i in z*.f*; do timeout 2.0 gfortran -c $i done > list 2>&1 grep 'internal compiler' list