This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/47307] New: be used uninitialized in this function
- From: "jszhao at yeah dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 15 Jan 2011 15:59:59 +0000
- Subject: [Bug fortran/47307] New: be used uninitialized in this function
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47307
Summary: be used uninitialized in this function
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jszhao@yeah.net
Hi there,
With the example code below, gfortran (4.5.0 and 4.6.0) give a strange warning
message with -O2 flag:
> gfortran -Wall -O2 -c readmo.f90
readmo.f90: In function 'readmo':
readmo.f90:4:0: warning: 'convrt' may be used uninitialized in this function
When with -O0, the warning message disappear.
In fact, the array 'lopt' is not initialized in the code, however, the compiler
does not give warning about that. I try the same code with g95, it give a
warning message 'used but not set' about 'lopt'.
Any suggestions or comments? Thanks in advance!
Regards,
Jinsong
subroutine readmo()
!!!! example code readmo.f90 !!!!
implicit none
real :: convrt
integer :: i, iflag, j
integer, dimension(3,5) :: lopt
iflag = 0
do i = 1, 5
do j = 1, 3
if ( lopt(j,i) < 0 ) then
convrt = 1.0
if ( j > 1 ) convrt = 2.0
iflag = 1
endif
enddo
enddo
if ( iflag /= 0 ) then
do i = 1, 5
write(6,*) i*convrt
enddo
endif
end subroutine readmo