https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109157

            Bug ID: 109157
           Summary: -fbound-check: false positive
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: philippe.wautelet at aero dot obs-mip.fr
  Target Milestone: ---

Hello,

The following code triggers a wrong out of bound detection:
> cat ndimlist.f90
program ndimlistbug
  implicit none

  integer, parameter :: FIELDSIZE=5
  type :: tfieldmetadata_base
    integer, dimension(10) :: ndimlist = -2
  end type tfieldmetadata_base

  type(tfieldmetadata_base), dimension(FIELDSIZE) :: tzfields

  call write_diachro_lfi( tzfields )

contains
subroutine write_diachro_lfi( tpfields )
  class(tfieldmetadata_base), dimension(:), intent(in) :: tpfields

  print *,tpfields(1)%ndimlist
  print *,tpfields(1)%ndimlist(8)
end subroutine write_diachro_lfi
end program ndimlistbug

If compiled with gfortran 12.2.0 (but also 11.1.0, 11.2.0, 11.3.0 and 12.1.0),
it gives:
> gfortran -g -fbounds-check ndimlist.f90
> ./a.out 
          -2          -2          -2          -2          -2          -2       
  -2          -2          -2          -2
At line 18 of file ndimlist.f90
Fortran runtime error: Index '8' of dimension 1 of array
'tpfields%_data%ndimlist' above upper bound of 5

Error termination. Backtrace:
#0  0x400aec in write_diachro_lfi
        at /home/waup/F90/bug_gcc/ndimlist/ndimlist.f90:18
#1  0x4008ee in ndimlistbug
        at /home/waup/F90/bug_gcc/ndimlist/ndimlist.f90:11
#2  0x400b8f in main
        at /home/waup/F90/bug_gcc/ndimlist/ndimlist.f90:11

It seems there is a confusion between the size of tpfields and the size of
tpfields()%ndimlist. This can be seen if FIELDSIZE is set to at least the size
of ndimlist.

The bug is not present with versions of gfortran below 11.
  • [Bug fortran/109157]... philippe.wautelet at aero dot obs-mip.fr via Gcc-bugs

Reply via email to