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

--- Comment #20 from anlauf at gcc dot gnu.org ---
(In reply to Bill Seurer from comment #19)
> There's some stuff above this in the module but this is the part that shows
> the error and I think it contains all the declarations.
> 
> subroutine Z()
>    real(r8) :: cld(99,99)
>    real(r8) cldeps
>    parameter (cldeps = 0.0_r8)
>    real(r8) asort(99)
>    if (cldeps > 0) then
>       asort(1) = 1.0_r8-(floor(cld(1,7)/cldeps)*cldeps)
>    endif
>    return
> end subroutine Z
> 
>    15 |       asort(1) = 1.0_r8-(floor(cld(1,7)/cldeps)*cldeps)
>       |                                              1
> Error: Division by zero at (1)

Thanks for the small example.

The parameter statement makes cldeps to a constant that is zero when that
line is processed.  Arguably that is borderline code.

I see two ways around:

1) either replace the parameter statement for cldeps by an initialization:

  data cldeps / 0.0_r8 /

2) or add -fno-range-check to the command line.

I could adjust the error message so that you get an approprate hint
how to switch off that error.

What do you think?

Reply via email to