The following i.m.o. correct code lets gfortran crash:

module problem
  implicit none
contains
  !---
  subroutine compare_words
    character(len=1), dimension(:), pointer :: word1
    allocate(word1(5))
    word1(1:5) = (/ '1','2','3','4','5' /)
    call print_word(chararray2string(word1))
    deallocate(word1)
  end subroutine compare_words
  !---
  subroutine print_word(word1)
    character(len=*), intent(in) :: word1 ! input
    print *,"word1 = ",word1
  end subroutine print_word
  !---  
  function chararray2string(chararray) result(text)
    !  #[
    character(len=1), dimension(:) :: chararray      ! input
    character(len=size(chararray)) :: text           ! output
    text = transfer(chararray,text)
  end function chararray2string
  !---
end module problem

program testproblem
  USE problem, only: compare_words
  call compare_words
end program Testproblem


The compiler responds as follows:

>gfortran -o problem problem.F90
problem.F90: In function ‘compare_words’:
problem.F90:8: internal compiler error: in gfc_conv_function_call, at
fortran/trans-expr.c:1107
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
>

-- 
           Summary: internal compiler error: in gfc_conv_function_call
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kloedej at knmi dot nl
                CC: gcc-bugs at gcc dot gnu dot org


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

Reply via email to