https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119118
Bug ID: 119118 Summary: substring with negative start index Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: kargls at comcast dot net Target Milestone: --- All, I found the following issue when perusing the lfortran bug list. program main implicit none integer n character(len=30) str n = 3 str = "123456789012345678901234567890" print *, str(-1:n), len(str(-1:n)) ! Whoops print *, str(-1:-2), len(str(-1:-2)) ! OK? zero-length substring ! print*, str(-1:3), len(str(-1:3)) ! gfortran issues error. print *, myshow(n, n, str) ! OK print *, myshow(-1, -2, str) ! OK? zero-length substring ! print *, myshow(-1, n, str) ! gfortran issues a run-time with -fcheck=all ! print *, myshow(-1, 3, str) ! gfortran issues a run-time with -fcheck=all contains function myshow(i, j, s) result(t) character(len=:), allocatable :: t character(len=*), intent(in) :: s integer, intent(in) :: i, j t = s(i:j) end function myshow end program main % gfcx -o z -fcheck=all -O3 -Wall -Wextra a.f90 % ./z 123 5 0 3 As you can see, the line marked with 'Whoops' yields a rather odd result. Not only is the line not diagnosed with a run-time error, it produces a string with 3 characters but with a reported length of 5.