There are some problems with CHARACTER-valued procedure pointers (and procedure
pointer components).


First example (with PPCs):

module m
 type :: t
 procedure(character(len=5)), pointer, nopass :: ptr
 end type
contains
 function abc()
  character(len=5) :: abc
  abc = 'abcde'
 end function abc
end module m

use m
 type(t) :: x
 character(len=5) :: str
 x%ptr => abc
 str = x%ptr()
end

gives the error:

test.f90:12:0: internal compiler error: in gfc_conv_component_ref, at
fortran/trans-expr.c:477


Second example (similar, but with simple procedure pointers):

procedure(character(len=5)), pointer :: pp
pp => abc
contains
 function abc()
 character(len=5) :: abc
 abc = 'abcde'
 end function abc
end

gives:

internal compiler error: in gfc_trans_pointer_assignment, at
fortran/trans-expr.c:4237


-- 
           Summary: [F03] Procedure Pointers with CHARACTER results
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janus at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41106

Reply via email to