------- Comment #6 from eedelman at gcc dot gnu dot org 2006-01-10 00:03 ------- (In reply to comment #5) > The limit was rose but we should be able to do better.
Indeed. But the problem is not trivial. For a case like above, where the array is a variable, we can translate it to (program|function|subroutine) stuff integer :: i_do integer :: i(100001) logical, save :: _i_initialized = .FALSE. if (.not._i_initialized) then i = (/ (i_do, i_do=1,100001) /) _i_initialized = .TRUE. end if write (*,*) i end (program|function|subroutine) stuff (The _i_initialized variable is not needed in a main program, but it is in a procedure.) This far it isn't a huge problem, but when 'i' is a PARAMETER it gets more complicated. PARAMETERs are meant to be compile time constants. Let's say we have e.g. subroutine stuff integer :: i_do integer, parameter :: i(100001) = <whatever> real(kind=i(1975)) :: a ... end subroutine stuff I can't at the moment think of a situation where we would need the entire array at the stage of compilation, but at least we need to be able to access individual elements. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19925