[PATCH][PR libgfortran/78314] Fix ieee_support_halting
Szabolcs Nagy
szabolcs.nagy@arm.com
Tue Nov 15 16:38:00 GMT 2016
On 15/11/16 16:22, FX wrote:
>> There seems to be a separate api for checking trapping support:
>> ieee_support_halting, but it only checked if the exception status
>> flags are available, so check trapping support too by enabling
>> and disabling traps.
>
> Thanks for the patch.
>
> I am worried about the unnecessary operations that weâre doing here: doesnât glibc have a way to tell you what it supports without having to do it (twice, enabling then disabling)?
>
> Also, the glibc doc states that: "Each of the macros FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW, FE_UNDERFLOW is defined when the implementation supports handling of the corresponding exceptionâ. It evens says:
>
>> Each constant is defined if and only if the FPU you are compiling for supports that exception, so you can test for FPU support with â#ifdefâ.
>
> So it seems rather clear that compile-time tests are the recommended way to go.
i think that's a documentation bug then, it
should say that the macros imply the support
of fpu exception status flags, but not trapping.
(otherwise glibc could not provide iso c annex
f conforming fenv on aarch64 and arm, where FE_*
must be defined, but only status flag support
is required.)
disabling/enabling makes this api a lot heavier
than before, but trapping cannot be decided at
compile-time, although the result may be cached,
i think this should not be a frequent operation.
otoh rereading my patch i think i fail to restore
the original exception state correctly.
More information about the Fortran
mailing list