https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82161
Bug ID: 82161 Summary: Failure of a complicated initialization expression Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: pault at gcc dot gnu.org Target Milestone: --- As reported on https://groups.google.com/forum/#!topic/comp.lang.fortran/yqT4TInGjC0 by James Van Buskirk: program data_var2 implicit none integer, parameter :: IMAX = 2, JMAX = 3, NMAX = 4 type mydata real var(NMAX) end type mydata integer i, j, n type(mydata), parameter :: data(IMAX, JMAX) = reshape( & [((mydata([(1.0e2*i+1.0e1*j+1.0e0*n,n=1,NMAX)]), & i=1,IMAX),j=1,JMAX)], [IMAX,JMAX]) end program data_var2 produces [pault@pc30 pdt]$ ~/irun/bin/gfortran -static-libgfortran init.f90 -fdump-tree-original -g init.f90:9:25: [((mydata([(1.0e2*i+1.0e1*j+1.0e0*n,n=1,NMAX)]), & 1 Error: Parameter āiā at (1) has not been declared or is a variable, which does not reduce to a constant expression * On the other hand, this compiles fine: program data_var2 implicit none integer, parameter :: IMAX = 2, JMAX = 3, NMAX = 4 type mydata real var(NMAX) end type mydata integer i, j, n type(mydata), parameter :: data(IMAX, JMAX) = reshape( & [((mydata([(1.0e0*n,n=1,NMAX)]), & i=1,IMAX),j=1,JMAX)], [IMAX,JMAX]) end program data_var2 In the original testcase, simplification is obviously thrown by having to deal with both the array constructor, which appears as an argument of the derived type constructor, and the outer array constructor. In particular, 'i' and 'j' are not being recognised as parameters. Regards Paul