https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88304
--- Comment #5 from Harald Anlauf <anlauf at gmx dot de> --- (In reply to Richard Biener from comment #4) > Confirmed. We do not expect > > CHAIN.10->gattr = {CLOBBER}; > > I believe the FE inserts these now to better share stack slots: Thanks for pointing to the gimple. Looking at it with my zero knowledge, it looks in addition to a wrong code issue. With this is mind, I further reduced the complete testcase to this: MODULE mo_feedbk implicit none type t_fileinfo integer :: nex = -1 integer :: pad = 0 end type t_fileinfo interface nf90_get_att module procedure nf90_get_att_one_FourByteInt end interface contains function nf90_get_att_one_FourByteInt(ncid, varid, name, values) integer, intent( in) :: ncid, varid character(len=*), intent( in) :: name integer , intent(out) :: values integer :: nf90_get_att_one_FourByteInt end function nf90_get_att_one_FourByteInt subroutine convert_cof () integer :: dummy = -1 ! type(t_fileinfo), save :: gattr ! No ICE type(t_fileinfo) :: gattr ! ICE contains subroutine open_input integer :: rc rc = nf90_get_att (0, 0, "experiment", dummy ) ! OK rc = nf90_get_att (0, 0, "experiment", gattr%nex ) ! ICE end subroutine open_input end subroutine convert_cof end module mo_feedbk A derived type with component initialization (like t_fileinfo) should implicitly get the SAVE attribute, which appears to be lost here. Adding it explicitly removes the ICE. Thus a front-end issue?