The following valid Fortran 95 program gives
Fortran runtime error: Array bound mismatch
for GNU Fortran 95 (GCC) 4.1.0 (SUSE Linux) and
Fortran runtime error: Array bound mismatch, upper bound of dimension 1 of
array 'rho' exceeded (in file 'main.f90', at line 12)
for GNU Fortran 95 (GCC) 4.2.0 20060608 (experimental).
-------<cut>--------------
program test
implicit none
real(8) :: rftp(4)
rftp = 42.0_8
call xcifc(n=4,rho=rftp)
contains
subroutine xcifc(n,rho)
implicit none
integer, optional, intent(in) :: n
real(8), optional, intent(in) :: rho(*)
if(present(n).and.present(rho)) then
print *,rho(1:n)
end if
end subroutine xcifc
end program test
--------------------------
Compiled as: gfortran -Wall -g -O0 -fbounds-check -Wconversion main.f90
If compiled without -fbounds-check, the output is ok.
Other compilers:
~> f95 -C=all -C=undefined -kind=byte main.f90 ; ./a.out
42.0000000000000000 42.0000000000000000 42.0000000000000000
42.0000000000000000
~> ifort -C -check all -warn all,nodec,interfaces -gen_interfaces -traceback
-fpe0 -fpstkchk -g -O0 main.f90; ./a.out
42.0000000000000 42.0000000000000 42.0000000000000
42.0000000000000
--
Summary: gfortran gives "Array bound mismatch" for valid program
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: major
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=27965