https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99125

--- Comment #5 from G. Steinmetz <gs...@t-online.de> ---

I also checked this invalid (probably a known issue) :


$ cat za.f90
program p
   character(:), allocatable :: a(:)
   character(8) :: c(2) = '12 45 78'
   a = c
   print *, a(7:8)
end

$ gfortran-11-20210221 za.f90 && ./a.out   # surprising
 12 45 7812 45 78


Detected at runtime :

$ gfortran-11-20210221 za.f90 -Wall -fcheck=all && ./a.out
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
Warning: '.a' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.offset' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.dim[0].lbound' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.dim[0].ubound' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.dim[0].lbound' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.dim[0].ubound' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.dim[0].ubound' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
za.f90:4:8:

    4 |    a = c
      |        ^
Warning: 'a.dim[0].lbound' may be used uninitialized [-Wmaybe-uninitialized]
za.f90:2:36:

    2 |    character(:), allocatable :: a(:)
      |                                    ^
note: 'a' declared here
At line 5 of file za.f90
Fortran runtime error: Index '7' of dimension 1 of array 'a' outside of
expected range (1:2)

Error termination. Backtrace:
#0  0x4025d1 in ???
#1  0x402738 in ???
#2  0x7fa0f5697f89 in ???
#3  0x4022b9 in ???
        at ../sysdeps/x86_64/start.S:120
#4  0xffffffffffffffff in ???


---

The very basic simplification gives :

$ cat zc.f90
program p
   character(8) :: c(2) = '12 45 78'
   print *, c(7:8)
end

$ gfortran-11-20210221 zc.f90 -Wall -fcheck=all && ./a.out
zc.f90:3:14:

    3 |    print *, c(7:8)
      |              1
Warning: Lower array reference at (1) is out of bounds (7 > 2) in dimension 1
At line 3 of file zc.f90
Fortran runtime error: Index '7' of dimension 1 of array 'c' outside of
expected range (1:2)

Error termination. Backtrace:
#0  0x4023f7 in ???
#1  0x40242b in ???
#2  0x7fc15fc2af89 in ???
#3  0x4022b9 in ???
        at ../sysdeps/x86_64/start.S:120
#4  0xffffffffffffffff in ???

Reply via email to