https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81962
Bug ID: 81962
Summary: -Wmaybe-uninitialized refers to wrong line (and only
works with -O3)
Product: gcc
Version: 7.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: janus at gcc dot gnu.org
Target Milestone: ---
Consider this Fortran test case:
module ce
implicit none
contains
subroutine ce3(a)
real, intent(in) :: a
if (a <= 0.) then
print *,"error"
end if
end subroutine
subroutine cee(Y)
real, intent(in) :: Y
real :: alpha
if (Y>0.) then
alpha = Y
else
print *,"error"
end if
call ce3(alpha)
end subroutine
end module
Compiling with "gfortran-7 -Wall -O3", I get:
ce.f90:9:0:
if (a <= 0.) then
Warning: ‘alpha’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
ce.f90:16:0:
real :: alpha
note: ‘alpha’ was declared here
The fact that one gets a warning here is good in principle, but there are two
problems:
1) The line that is referred to is not really the right one. In particular it
does not contain any mention of 'alpha', which can be really confusing for
larger codes. The warning should instead refer to the line "call ce3(alpha)".
2) The warning disappears when -O3 is not used (or with a lower warning level).