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

            Bug ID: 106108
           Summary: gfortran gives warning about unitilialized variable
                    for string with both allocatable length and size
           Product: gcc
           Version: 11.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kaiserkarl31 at yahoo dot com
  Target Milestone: ---

gfortran using "-Wuninitialized" spits out an erroneous warning message for the
declaration of a string that has both allocatable length and allocatable
dimension. Making it a fixed-length string works: gfortran handles the
fixed-length string with allocatable dimension.

The following program is a minimal working example:
program test
   implicit none
   character (len=:), dimension(:), allocatable :: args
   allocate( character(len=6) :: args(2) )
   args(1) = 'hello,'
   args(2) = 'world!'
   print '(2(A,1X))', args
end program test

The compiler seems to handle the above code just fine, but it should not warn
the user. Instead, if compiled with "-Wall" or "-Wuninitialized", it says this:

test.f90:3:55:

    3 |    character (len=:), dimension(:), allocatable :: args
      |                                                       ^
Warning: ‘.args’ is used uninitialized [-Wuninitialized]


As I said before, making the length fixed seems to work:
program test
   implicit none
   character (len=6), dimension(:), allocatable :: args
   allocate( args(2) )
   args(1) = 'hello,'
   args(2) = 'world!'
   print '(2(A,1X))', args
end program test

This version produces no warnings.

Reply via email to