http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59060
--- Comment #4 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> --- Thanks, I indeed start thinking gfortran has it right. As a small variant: MODULE M1 TYPE T1 INTEGER, PRIVATE :: I=0 END TYPE T1 TYPE T2 TYPE(T1) :: D1 END TYPE T2 TYPE(T2), PARAMETER :: D2 END MODULE M1 All of cray, intel and pgi complain about this along the lines: bug.f90(8): error #6557: An =initialization-expr is missing; an initialization expression is required when using the PARAMETER attribute. [D2] TYPE(T2), PARAMETER :: D2 ------------------------^ gfortran accepts this... this could be right again, since all components ultimately have a default initialization.