[Bug fortran/88304] [9 Regression] ICE in use_pointer_in_frame, at tree-nested.c:267

anlauf at gmx dot de gcc-bugzilla@gcc.gnu.org
Tue Dec 4 21:11:00 GMT 2018


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?


More information about the Gcc-bugs mailing list