This is the mail archive of the
mailing list for the GCC project.
Re: [RFC Patch]: Implement remainder() as built-in function [PR fortran/24518]
On 10/24/06, Uros Bizjak <email@example.com> wrote:
On 10/24/06, Roger Sayle <firstname.lastname@example.org> wrote:
> We should also think a little about Richard's suggestion of perhaps
> being more aggresive about ignoring errno when the language standards
> state that this isn't a strict requirement. However, that should
> probably be a independent patch (perhaps with its own enhancement
> PR?), maybe even a new command line option, -fstrict-errno-math?.
Perhaps Richard's problem is specific to lrint (). At least in
manpages (which are not considered as an authoritative
documentation...) it is stated that lrint() _may_ set errno to EDOM,
but i.e. remainder() sets errno to EDOM for y=0.
It should be noted that glibc does not set EDOM when remainder()
returns NaN, where solaris libm does.
No, my problem is really a generic one. I wanted clarification on what
-ferrno-math and -fno-errno-math really mean semantically and from an
optimization point of view. Currently -fno-errno-math ignores errno
completely and -ferrno-math tries to match the C library behavior by
re-dispatching to it for setting errno (where possible - so, not for lrint
for example). One problem is that gcc does currently not know how to
access the errno location, so it has to dispatch to libc always for this.
I think the semantics of -fno-errno-math are fine, likewise -ferrno-math
(get libc behavior). I would suggest making the default (not explicitly
specifying either one) using -fno-errno-math behavior for builtins the
standard does not require setting errno and -ferrno-math if it does.
Or maybe call that -fno-errno-math and -fstrict-errno-math, where
-ferrno-math -fno-strict-errno-math would be default.