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

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org ---
(In reply to Matt Thompson from comment #0)
> All,
> 
> A colleague of mine encountered an issue with 8.2.0 (but it's also in 7.3.0
> at least). We believe it might be a bug since our reading of the Standard
> seems to make it legal.
> 
> Namely if this program:
> 
> PROGRAM test
>    USE, INTRINSIC :: ieee_arithmetic
>    IMPLICIT NONE
>    REAL :: inf
>    inf = IEEE_VALUE(inf,  IEEE_POSITIVE_INF)
> END PROGRAM test
> 
> is compiled with -ffpe-trap=overflow the code FPEs:

gfortran's IEEE modules and the -ffpe-trap option are independent
of each other.  As the manual states, -ffpe-trap is a *debugging*
option, and will enabling traps on floating point exceptions.  You
specifically requested an overflow trap.  What do you expect to
happen?

The likely correct solution is to manipulate the halting 
behavior with a combination of IEEE_GET_HALTING_MODE and
IEEE_SET_HALTING_MODE.  In fact, F2018, 17.11.6 contains
this exact example.

   Example. To store the halting mode for IEEE_OVERFLOW, do a
   calculation without halting, and restore the halting mode later:

   USE, INTRINSIC :: IEEE_ARITHMETIC
   LOGICAL HALTING
   ...
   CALL IEEE_GET_HALTING_MODE (IEEE_OVERFLOW, HALTING) ! Store halting mode
   CALL IEEE_SET_HALTING_MODE (IEEE_OVERFLOW, .FALSE.) ! No halting
   ... ! calculation without halting
   CALL IEEE_SET_HALTING_MODE (IEEE_OVERFLOW, HALTING) ! Restore halting mode

whether or not these functions works is something that I
haven't investigated.

Reply via email to