https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109223
--- Comment #7 from Steve Kargl <sgk at troutmask dot apl.washington.edu> --- On Tue, Mar 21, 2023 at 12:27:58PM -0700, Steve Kargl wrote: > > So, there is a chunk of code in decl.cc(4682-4689 or so), > > if (implicit_flag == 1) > { > if (matched_type && gfc_match_char (')') != MATCH_YES) > return MATCH_ERROR; > > return MATCH_YES; > } > > causing the problem. The implicit_flag == 1 conditional was > added in 2004 (revision e5ddaa24beae) to check for 'IMPLICIT > CHARACTER'. The code block was updated in revision 0fb56814562a > when 'TYPE(intrinsic-type-spec)' was added to gfortran. > > I have no idea how this was suppose to work. Well, I figured that out. The code allows 'implicit real (a-z)' to be parsed and compiled. The downside is that it blocks OP's code. A simplied code program testit ! implicit real (a-z) ! Works ! implicit real(4) (a-z) ! Works implicit type(real(4)) (a-z) ! Whoops. type(real(4)) :: quad if (kind(quad) /= 4) stop 1 end program testit So, 'type(intrinsic-type-spec)' seems to be broken when placed in 'implicit type(intrinsic-type-spec)'.