https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109223
--- Comment #4 from urbanjost at comcast dot net --- User-defined types work and as I read the ISO standard are supported, and TYPE(REAL) works; it is only when a parameter is added that it fails; nvfortran fails for user-defined type declared below it but it works with one defined via a USE from a module; while gfortran allows the type to be defined after the use, but I consider that a nvfortran bug myself. Rereading the spec "type" and "type arguments" could be interpreted as meaning just something like "REAL(KIND=QP) (A)" which does work, but I do not see where the excludes "TYPE(REAL(QP))", particularly since "TYPE(REAL)" and all other type declaration syntax appears to work? program testit use, intrinsic :: iso_fortran_env, only : real_kinds,sp=>real32,dp=>real64,qp=>real128 implicit type(null) (a) implicit type(real) (f) implicit real(dp) (d) !implicit type(real(kind=qp)) (c) ! <== OK in a declaration, error in IMPLICIT type null end type null ! the syntax works for a declaration type(real) :: float_default type(real(kind=sp)) :: float type(real(kind=dp)) :: long type(real(kind=qp)) :: quad end program testit