1! { dg-do run }
2! PR38119 - The scalarizer got the loop size wrong
3! for the temporary coming from the call to 'same'.
4!
5! Contributed by Mikael Morin <mikael.morin@tele2.fr>
6! based on a program by Vivek Rao.
7!
8module bar
9  implicit none
10  character(len = 2) :: c(1)
11contains
12  elemental function trim_append (xx,yy) result(xy)
13    character (len = *), intent(in) :: xx,yy
14    character (len = len (xx) + len (yy)) :: xy
15    xy = trim (xx) // trim (yy)
16  end function trim_append
17  function same(xx) result(yy)
18    character (len = *), intent(in) :: xx(:)
19    character (len = len (xx))       :: yy(size (xx))
20    yy = xx
21  end function same
22  subroutine xmain()
23    c =  trim_append(["a"],same(["b"]))  ! The problem occurred here
24  end subroutine xmain
25end module bar
26  use bar
27  call xmain
28  if (c(1) .ne. "ab") call abort
29end
30