------- Comment #25 from dominiq at lps dot ens dot fr 2008-02-02 11:09 ------- >From comment #24:
> ... handling the large array constructors by building the array at run time > is obviously not fixed yet. This can be done for INTEGER, PARAMETER :: N=65535 INTEGER :: I(N)=(/(MOD(K,2),K=1,N)/) INTEGER :: M(N)=(/(MOD(K,2),K=N,1,-1)/) print *, M(N) but not when I and M are PARAMETERs: if I am not mistaken PARAMETER defines constants for the compiler, hence cannot be deferred to run time. Note that the above code compiles in few seconds while it takes several hundred seconds with PARAMETER. A short term solution could be to improve the error message when the 65535 limit is reached: "Initialization expression didn't reduce" does not point clearly to this limit. An error (if correct?) such that "Array constructors cannot have more than 65535 elements" will give a better diagnostic of what's going wrong. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19925