! { dg-do run } ! { dg-options "-fno-automatic" } ! ! PR fortran/55733 ! ! Check that -fno-automatic makes the local variable SAVEd ! ! Scalar allocatable subroutine foo(i) integer :: i integer, allocatable :: j if (i == 1) j = 42 if (.not. allocated (j)) call abort () if (j /= 42) call abort () end ! Deferred-length string scalar subroutine bar() logical, save :: first = .true. character(len=:), allocatable :: str if (first) then first = .false. if (allocated (str)) call abort () str = "ABCDEF" end if if (.not. allocated (str)) call abort () if (len (str) /= 6) call abort () if (str(1:6) /= "ABCDEF") call abort () end subroutine bar ! Deferred-length string array subroutine bar_array() logical, save :: first = .true. character(len=:), allocatable :: str if (first) then first = .false. if (allocated (str)) call abort () str = "ABCDEF" end if if (.not. allocated (str)) call abort () if (len (str) /= 6) call abort () if (str(1:6) /= "ABCDEF") call abort () end subroutine bar_array call foo(1) call foo(2) call bar() call bar_array() call bar() call bar_array() end