https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86117
Bug ID: 86117 Summary: bogus warning maybe-uninitialized with class(*) and source argument in allocate Product: gcc Version: 8.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: mscfd at gmx dot net Target Milestone: --- Compiling the following module with gfortran -Og -Wall -fcheck=all -c mod.f90 gives Warning: ‘<anonymous>’ may be used uninitialized in this function [-Wmaybe-uninitialized] When leaving out any one of the three options -Og, -Wall or -fcheck=all the warning disappears. When replacing class(*) with integer the warning also disappears. When using scalars for a and b (omitting the dimension(:) part and the do loop) the warning also disappears. module mod private public sub type, public :: generic class(*), allocatable :: item ! with integer instead of class(*), there is no warning ! integer, allocatable :: item end type generic contains subroutine sub(a, b) type(generic), dimension(:), intent(in) :: a type(generic), dimension(:), intent(out) :: b integer :: i do i = 1, 10 allocate(b(i)%item, source=a(i)%item) end do end subroutine sub end module mod