https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96047
Bug ID: 96047 Summary: Bogus unitialized warning for derived type with allocatable components Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: jellby at yahoo dot com Target Milestone: --- The program below gives a bogus warning when compiling with -O0, but not with -O1 or higher: $ gfortran a.f90 -Wall -O0 a.f90:9:0: call new(a,3) Warning: ‘a.dim[0].ubound’ may be used uninitialized in this function [-Wmaybe-uninitialized] a.f90:9:0: Warning: ‘a.dim[0].lbound’ may be used uninitialized in this function [-Wmaybe-uninitialized] The warning goes away if the "allocate(a(0))" line is uncommented, but that should not be necessary, because the argument is "intent(out)", so it it must be allocated in the subroutine. $ cat a.f90 program test implicit none type foo real, allocatable :: c(:) end type foo type(foo), allocatable :: a(:) !allocate(a(0)) call new(a,3) contains subroutine new(m,n) type(foo), allocatable, intent(out) :: m(:) integer, intent(in) :: n integer :: i allocate(m(n)) do i=1,n allocate(m(i)%c(n)) end do end subroutine new end program