blob: 7836ce8f4df70c354671bd29f3971c675c703456 [file] [log] [blame]
! { dg-do compile }
!
! Test the fix for PR87239 in which the call to the elemental function
! 'gettwo' was being added before the scalarization loop in the assignment.
! Since the result temporary was being declared in the loop body, this
! drove the gimplifier crazy. It is sufficient to compile this testcase
! since it used to ICE.
!
! Contributed by Juergen Reuter <juergen.reuter@desy.de>
!
module test
implicit none
contains
elemental function gettwo( s ) result( res )
character(*), intent(in) :: s
character(len(s)) :: res
res = s( 1 : 2 )
endfunction gettwo
endmodule test
program main
use test
implicit none
character(10) :: inp( 5 )
integer :: i
! character(10), allocatable :: out(:) ! this works
character(:), allocatable :: out(:) ! this was stuffed
inp = [ 'aaa', 'bbb', 'ccc', 'ddd', 'eee' ]
out = gettwo( inp )
do i = 1, size (out, 1)
if (trim (out(i)) .ne. inp(i)(1:2)) stop 1
end do
endprogram main