[Bug fortran/27588] New: -fbounds-check should catch substring out of range accesses
tobias dot burnus at physik dot fu-berlin dot de
gcc-bugzilla@gcc.gnu.org
Sat May 13 14:07:00 GMT 2006
Taken from http://www.polyhedron.com/pb05/linux/diagnose.html
------<CBND1.F>-------
! character bound error - local variable
program cbnd1
character*10 zz
i = 2
j = i+9
zz(i:j) = 'abcdef'
print * , zz
end
----------------------
gfortran-4.2 -Wall -pedantic -fbounds-check CBND1.F
./a.out
^Aabcdef
Expected: Issue a run-time error message.
Examples of other compilers:
ifort64-9.1 -C -check all -warn all,nodec,interfaces -gen_interfaces -traceback
-fpe0 -fpstkchk CBND1.F
./a.out
forrtl: severe (408): fort: (4): Variable ZZ has substring ending point 11
which is greater than the variable length of 10
g95 -Wall -pedantic -fbounds-check -ftrace=full CBND1.F
./a.out
At line 6 of file CBND1.F
Traceback: (Innermost first)
Fortran runtime error: Substring reference out of bounds: (2:11) in string of
length 10
NAG: f95 -C=all -C=undefined -info -g -gline CBND1.F
Out of range: substring ending position 11 is greater than length 10
Program terminated by fatal error
In CBND1, line 6 of CBND1.F
The following is even detected at compile time by the intel and NAGf95
compilers (gfortran does not detect it at compile or runtime):
--------<CBND3.F>--------------
! Check character bound error - assign to dummy argument which is larger than
actual arg
program cbnd3
character*10 zz,zzz
common /aaa/zz,zzz
zz = '0000000000'
zzz = '1111111111'
call sub(zz)
print * , zzz
end
subroutine sub(zz)
character*11 zz
zz = 'abcdef'
print * , zz
end
---------------------------
--
Summary: -fbounds-check should catch substring out of range
accesses
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tobias dot burnus at physik dot fu-berlin dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27588
More information about the Gcc-bugs
mailing list