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

            Bug ID: 82814
           Summary: ICE from submodule character function
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: werner.blokbuster at gmail dot com
  Target Milestone: ---

The following program gives an ICE with gfortran 7.2.0 and 6.4.0. Unfortunately
I do not have version 8 to test.


module u

    implicit none

    interface unique
        module function uniq_char(input) result(uniq)
            character(*), intent(in) :: input(:)
            character(size(input)), allocatable :: uniq(:)
        end function uniq_char
    end interface unique

end module u


submodule (u) z

    implicit none

contains

    module function uniq_char(input) result(uniq)
        character(*), intent(in) :: input(:)
        character(size(input)), allocatable :: uniq(:)
            allocate(uniq(1))
            uniq = 'A'
    end function uniq_char

end submodule z


program test_uniq
    use u, only: unique
    implicit none

    write(*,*) unique(['1','2','1','2'])

end program test_uniq

ICE:

test_uniq.f:27:0:

             allocate(uniq(1))

internal compiler error: Segmentation fault: 11

test_uniq.f:27:0: internal compiler error: Abort trap: 6


The program compiles and runs if any of:

- character variables are replaced with integer or real variables;
- the submodule is not used and the function is placed within module u;
- the variable 'uniq' is given a fixed length, e.g. character(1).

I'm running on a macbook 10.12.6 using gfortran from macports.

WB

Reply via email to