1! Related to PR 15326. Compare functions that return string pointers with 2! functions that return strings. 3! { dg-do run } 4program main 5 implicit none 6 7 character (len = 30), target :: string 8 9 call test (f1 (), 30) 10 call test (f2 (50), 50) 11 call test (f3 (), 30) 12 call test (f4 (70), 70) 13 14 call indirect (100) 15contains 16 function f1 () 17 character (len = 30) :: f1 18 f1 = '' 19 end function f1 20 21 function f2 (i) 22 integer :: i 23 character (len = i) :: f2 24 f2 = '' 25 end function f2 26 27 function f3 () 28 character (len = 30), pointer :: f3 29 f3 => string 30 end function f3 31 32 function f4 (i) 33 integer :: i 34 character (len = i), pointer :: f4 35 f4 => string 36 end function f4 37 38 subroutine indirect (i) 39 integer :: i 40 call test (f1 (), 30) 41 call test (f2 (i), i) 42 call test (f3 (), 30) 43 call test (f4 (i), i) 44 end subroutine indirect 45 46 subroutine test (string, length) 47 character (len = *) :: string 48 integer, intent (in) :: length 49 if (len (string) .ne. length) call abort 50 end subroutine test 51end program main 52