From: Paul Thomas Date: Thu, 17 May 2018 15:31:42 +0000 (+0000) Subject: re PR fortran/82814 (ICE from submodule character function) X-Git-Tag: releases/gcc-6.5.0~315 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54c729a5f693cfe111f2de9edecc361d915ff6b6;p=thirdparty%2Fgcc.git re PR fortran/82814 (ICE from submodule character function) 2017-05-17 Paul Thomas PR fortran/82814 * gfortran.dg/submodule_31.f08: New test. From-SVN: r260325 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ad4945ec1c0c..3bf4e5c6727f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2017-05-17 Paul Thomas + + PR fortran/82814 + Backport from trunk + * gfortran.dg/submodule_31.f08: New test. + 2018-05-16 Paul Thomas PR fortran/83149 diff --git a/gcc/testsuite/gfortran.dg/submodule_31.f08 b/gcc/testsuite/gfortran.dg/submodule_31.f08 new file mode 100644 index 000000000000..72594d05df39 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/submodule_31.f08 @@ -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" +! +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