[Bug middle-end/82601] New: missing uninitialized warning with -O0 / -Og
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Oct 18 08:13:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82601
Bug ID: 82601
Summary: missing uninitialized warning with -O0 / -Og
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: janus at gcc dot gnu.org
Target Milestone: ---
Consider this simple Fortran test case:
program uninit
integer :: p,q
p = -1
call sub(p, q)
if (p<q) print *,"..."
contains
subroutine sub(i, o)
integer, intent(in) :: i
integer, intent(out) :: o
if (i<0) then
print *, "..."
else
o = 1
end if
end subroutine
end
With -Wall and -O1 (or higher), all recent gfortran versions print:
if (p<q) print *,"..."
Warning: ‘q’ is used uninitialized in this function [-Wuninitialized]
However, with -O0 or -Og, no warning is issued.
It should be possible to detect that 'o' may be uninitialized by looking only
at the subroutine itself (without any information about the caller).
More information about the Gcc-bugs
mailing list