! { dg-options "-O2 -fno-automatic" } subroutine foo (b) logical b integer i, j character*24 s save i if (b) then i = 26 j = 131 s = 'This is a test string' else if (i .ne. 26 .or. j .ne. 131) call abort if (s .ne. 'This is a test string') call abort end if end subroutine foo subroutine bar (s) character*42 s if (s .ne. '0123456789012345678901234567890123456') call abort call foo (.false.) end subroutine bar subroutine baz character*42 s ! Just clobber stack a little bit. s = '0123456789012345678901234567890123456' call bar (s) end subroutine baz call foo (.true.) call baz call foo (.false.) end