From: Joseph Myers <joseph@codesourcery.com>
To: Richard Biener <rguenther@suse.de>
Cc: Raoni Fassina Firmino <raoni@linux.ibm.com>, <jakub@redhat.com>,
<segher@kernel.crashing.org>, <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH v5] rtl: builtins: (not just) rs6000: Add builtins for fegetround, feclearexcept and feraiseexcept [PR94193]
Date: Wed, 4 Nov 2020 21:20:22 +0000 [thread overview]
Message-ID: <alpine.DEB.2.22.394.2011042108380.750942@digraph.polyomino.org.uk> (raw)
In-Reply-To: <nycvar.YFH.7.76.2011041022570.10073@p653.nepu.fhfr.qr>
On Wed, 4 Nov 2020, Richard Biener wrote:
> AFAICS you do nothing to marshall with the actually used libc
> implementation which AFAIU can choose arbitrary values for
> the FE_* macros. I'm not sure we require the compiler to be
> configured for one specific C library and for example require
> matching FE_* macro definitions for all uses of the built
> compiler.
The compiler is definitely expected to match a given C library. This
applies for <stdint.h> and other typedefs, for example (various of which
are used for printf format checking). It also applies to FE_* in some
cases where relevant for __atomic_feraiseexcept for floating-point atomic
compound assignment.
> Now, I wonder whether _GCC_ should provide the FE_* macros, thus
> move (parts of) fenv.h to GCC like we do for stdint.h?
I think that would be a bad idea. fenv.h involves library functionality
that can sometimes need to do things beyond simply modifying hardware
registers. Consider e.g. the TLS exception and rounding mode state for
soft-float powerpc-linux-gnu. Or the TLS decimal rounding mode in libdfp.
Or how exception enabling can involve a prctl call on powerpc. Getting
libgcc involved in storing such TLS state seems problematic. And whether
an FE_* macro should be defined may depend on whether the library supports
the underlying functionality (consider the case of FE_TONEARESTFROMZERO
for RISC-V, where defining it should mean library code actually works in
that rounding mode, not just that hardware supports it).
The natural way to handle the rule in C2x that "The strictly conforming
programs that shall be accepted by a conforming freestanding
implementation that defines __STDC_IEC_60559_BFP__ or
__STDC_IEC_60559_DFP__ may also use features in the contents of the
standard headers <fenv.h> and <math.h> and the numeric conversion
functions (7.22.1) of the standard header <stdlib.h>." would be to say
that GCC provides the compiler pieces of a freestanding implementation,
not necessarily the whole freestanding implementation. (Those macros
would only be defined via implicit preinclusion of stdc-predef.h anyway.)
--
Joseph S. Myers
joseph@codesourcery.com
prev parent reply other threads:[~2020-11-04 21:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-03 23:12 Raoni Fassina Firmino
2020-11-04 9:35 ` Richard Biener
2020-11-04 15:10 ` Raoni Fassina Firmino
2020-11-04 21:06 ` Joseph Myers
2020-11-17 22:19 ` Jeff Law
2020-11-18 7:31 ` Richard Biener
2020-11-18 12:38 ` Segher Boessenkool
2020-11-18 21:45 ` Jeff Law
2021-01-07 14:20 ` Raoni Fassina Firmino
2020-11-17 22:23 ` Jeff Law
2021-01-07 14:20 ` Raoni Fassina Firmino
2021-01-14 17:40 ` Segher Boessenkool
2020-11-04 21:20 ` Joseph Myers [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.22.394.2011042108380.750942@digraph.polyomino.org.uk \
--to=joseph@codesourcery.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=raoni@linux.ibm.com \
--cc=rguenther@suse.de \
--cc=segher@kernel.crashing.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).