re PR fortran/82814 (ICE from submodule character function)

2017-05-17  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/82814
	* gfortran.dg/submodule_31.f08: New test.

From-SVN: r260324
This commit is contained in:
Paul Thomas 2018-05-17 15:17:43 +00:00
parent 5026bf985a
commit 0ecc8d6fd1
2 changed files with 60 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2017-05-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82814
Backport from trunk
* gfortran.dg/submodule_31.f08: New test.
2018-05-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/83149

View File

@ -0,0 +1,54 @@
! { dg-do run }
!
! Test the fix for PR82814 in which an ICE occurred for the submodule allocation.
!
! Contributed by "Werner Blokbuster" <werner.blokbuster@gmail.com>
!
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
contains
module function uniq2(input) result(uniq)
character(*), intent(in) :: input(:)
character(size(input)), allocatable :: uniq(:)
allocate(uniq(1))
uniq = 'A'
end function uniq2
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)) ! This used to ICE
uniq = 'A'
end function uniq_char
end submodule z
program test_uniq
use u
implicit none
character(1), dimension(4) :: chr = ['1','2','1','2']
write(*,*) unique(chr)
write(*,*) uniq2(chr)
end program test_uniq