! { 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