! { dg-do run } ! ! Test the fix for PR69423. ! ! Contributed by Antony Lewis ! program tester character(LEN=:), allocatable :: S S= test(2) if (len(S) .ne. 4) STOP 1 if (S .ne. "test") STOP 2 if (allocated (S)) deallocate (S) S= test2(2) if (len(S) .ne. 4) STOP 3 if (S .ne. "test") STOP 4 if (allocated (S)) deallocate (S) contains function test(alen) character(LEN=:), allocatable :: test integer alen, i do i = alen, 1, -1 test = 'test' exit end do ! This line would print nothing when compiled with -O1 and higher. ! print *, len(test),test if (len(test) .ne. 4) STOP 5 if (test .ne. "test") STOP 6 end function test function test2(alen) result (test) character(LEN=:), allocatable :: test integer alen, i do i = alen, 1, -1 test = 'test' exit end do ! This worked before the fix. ! print *, len(test),test if (len(test) .ne. 4) STOP 7 if (test .ne. "test") STOP 8 end function test2 end program tester