For the code

program main
implicit none
integer, parameter :: n = 10
real :: x(n), dx(n)
integer :: i
call random_number(x)
do i=1,n
   if (i > 1) then
      dx(i) = x(i) - x(i-1)
   else
      dx(i) = 0.0
   end if
end do
print*,dx
end program main

gfortran -Wextra says for GNU Fortran (GCC) 13.0.0 20221218

xspur.f90:9:23:


    7 | do i=1,n
      |        2               
    8 |    if (i > 1) then
    9 |       dx(i) = x(i) - x(i-1)
      |                       1
Warning: Array reference at (1) out of bounds (0 < 1) in loop beginning at (2) 
[-Wdo-subscript]

but the code is fine because of the if guard. Ideally such spurious messages 
would be suppressed, but I don't know if this is too hard.

Vivek Rao

Reply via email to