[Bug fortran/78848] New: [OOP] ICE on writing CLASS variable with non-typebound DTIO procedure

janus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Dec 17 22:16:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78848

            Bug ID: 78848
           Summary: [OOP] ICE on writing CLASS variable with non-typebound
                    DTIO procedure
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: janus at gcc dot gnu.org
  Target Milestone: ---

Here is a variant of a testcase posted by Mikael at
https://gcc.gnu.org/ml/fortran/2016-12/msg00232.html:


module m
   type :: t
   contains
!      procedure :: wf
!      generic :: write(formatted) => wf
   end type
   interface write(formatted)
      procedure wf
   end interface
contains
   subroutine wf(this, a, b, c, d, e)
      class(t), intent(in) :: this
      integer, intent(in) :: a
      character, intent(in) :: b
      integer, intent(in) :: c(:)
      integer, intent(out) :: d
      character, intent(inout) :: e
   end subroutine
end

program p
  use m
  class(t), allocatable :: z
  allocate(z)
  print *, z
end


I assume this is valid code, but it results in an ICE:

f951: internal compiler error: Bad IO basetype (7)
0x7949b3 gfc_internal_error(char const*, ...)
        /home/jweil/gcc/trunk/gcc/fortran/error.c:1346
0x9128fa transfer_expr
        /home/jweil/gcc/trunk/gcc/fortran/trans-io.c:2429

Note that the ICE goes away when using the typebound version of the DTIO
procedure (commented out in the above example).


More information about the Gcc-bugs mailing list