https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67524
--- Comment #2 from Gerhard Steinmetz <gerhard.steinmetz.fort...@t-online.de> --- There is no problem when implicit character(8) (a-z) is changed to one of implicit none implicit integer (a-z) implicit logical (a-z) implicit real (a-z) implicit complex (a-z) ... And in above examples, there is no problem when "real :: e" is changed to "integer :: e" (same type as f). But same ICE, if type of e is changed from real to one of logical, double precision or complex. For example : $ cat zl1_imchfe.f90 module m implicit character(8) (a-z) contains function f(x) integer :: x integer :: f logical :: e f = x return entry e(x) e = x > 0 end end module program p use m print *, f(1) print *, e(1) end