! { dg-do run } ! ! PR fortran/51055 ! PR fortran/49110 ! PR fortran/60334 subroutine test() implicit none integer :: i = 5 character(len=:), allocatable :: s1 character(len=:), pointer :: s2 character(len=5), target :: fifeC = 'FIVEC' call sub(s1, i) if (len(s1) /= 5) STOP 1 if (s1 /= "ZZZZZ") STOP 2 s2 => subfunc() if (len(s2) /= 5) STOP 3 if (s2 /= "FIVEC") STOP 4 s1 = addPrefix(subfunc()) if (len(s1) /= 7) STOP 5 if (s1 /= "..FIVEC") STOP 6 contains subroutine sub(str,j) character(len=:), allocatable :: str integer :: j str = REPEAT("Z",j) if (len(str) /= 5) STOP 7 if (str /= "ZZZZZ") STOP 8 end subroutine sub function subfunc() result(res) character(len=:), pointer :: res res => fifec if (len(res) /= 5) STOP 9 if (res /= "FIVEC") STOP 10 end function subfunc function addPrefix(str) result(res) character(len=:), pointer :: str character(len=:), allocatable :: res res = ".." // str end function addPrefix end subroutine test program a character(len=:),allocatable :: s integer :: j=2 s = repeat ('x', j) if (len(repeat(' ',j)) /= 2) STOP 11 if (repeat('y',j) /= "yy") STOP 12 if (len(s) /= 2) STOP 13 if (s /= "xx") STOP 14 call test() end program a