| ! { dg-do run } |
| ! PR38119 - The scalarizer got the loop size wrong |
| ! for the temporary coming from the call to 'same'. |
| ! |
| ! Contributed by Mikael Morin <mikael.morin@tele2.fr> |
| ! based on a program by Vivek Rao. |
| ! |
| module bar |
| implicit none |
| character(len = 2) :: c(1) |
| contains |
| elemental function trim_append (xx,yy) result(xy) |
| character (len = *), intent(in) :: xx,yy |
| character (len = len (xx) + len (yy)) :: xy |
| xy = trim (xx) // trim (yy) |
| end function trim_append |
| function same(xx) result(yy) |
| character (len = *), intent(in) :: xx(:) |
| character (len = len (xx)) :: yy(size (xx)) |
| yy = xx |
| end function same |
| subroutine xmain() |
| c = trim_append(["a"],same(["b"])) ! The problem occurred here |
| end subroutine xmain |
| end module bar |
| use bar |
| call xmain |
| if (c(1) .ne. "ab") STOP 1 |
| end |