------- 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

Reply via email to