From: Jakub Jelinek <jakub@redhat.com>
To: Joseph Myers <joseph@codesourcery.com>
Cc: Marek Polacek <polacek@redhat.com>,
gcc-patches@gcc.gnu.org, libc-alpha@sourceware.org
Subject: Re: [RFC] Add stdckdint.h header for C23
Date: Tue, 13 Jun 2023 17:20:39 +0200 [thread overview]
Message-ID: <ZIiJR0hIyJwUnCUE@tucnak> (raw)
In-Reply-To: <a8efb653-e6e6-4e2e-a1ac-acbc9ca199bb@codesourcery.com>
On Tue, Jun 13, 2023 at 03:10:48PM +0000, Joseph Myers wrote:
> > So why does C2X say
> > Recommended practice
> > It is recommended to produce a diagnostic message if type2 or type3 are
> > not suitable integer types, or if *result is not a modifiable lvalue of
> > a suitable integer type.
> > ?
> > Or is it meant that a suitable integer type doesn't need to be necessarily
> > one that is listed in the previous paragraph?
> > Perhaps the checking could be guarded on #ifdef __STRICT_ANSI__, sure...
>
> Diagnostics are better than doing something completely random - but making
> it conditional when there are sensible semantics also makes sense.
>
> It seems likely a future standard version will support these operations
> for bit-precise types, at least. (Bit-precise types are generally tricky
> for type-generic operations; there's no standard way to select on them
> with _Generic beyond listing individual types with specific widths, and no
> standard way to determine the width of the bit-precise type of an
> argument. So implementing some type-generic operations for such types may
> need new language extensions, prompting WG14 caution about requiring such
> support - but this also makes support for such types in standard
> type-generic macros in headers particularly valuable, precisely because
> they can't be implemented purely in user code using standard language
> features.)
Yeah, having say __builtin_{clz,ctz,ffs,popcount,parity} variants which would
be typegeneric and would allow say any normal integral or _BitInt type
(or just unsigned versions thereof?) would be useful. Even without _BitInt
we have the problem that we don't have builtins for __uint128_t.
One question is if we should keep them UB on zero input or hardcode some particular
behavior for clz/ctz. The backend defaults might not be appropriate, I
think if we'd make it non-UB, using the precision of the type would be
reasonable, whatever it is (__builtin_clzb ((unsigned _BitInt(126)) 0)
might be 126 etc.).
Jakub
next prev parent reply other threads:[~2023-06-13 15:20 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-10 10:37 Jakub Jelinek
2023-06-10 11:37 ` Jakub Jelinek
2023-06-11 14:05 ` Martin Uecker
2023-06-12 10:35 ` Eric Gallager
2023-06-12 21:51 ` Joseph Myers
2023-06-13 6:28 ` Jakub Jelinek
2023-06-13 15:10 ` Joseph Myers
2023-06-13 15:20 ` Jakub Jelinek [this message]
2023-06-13 15:45 ` Joseph Myers
2023-06-14 2:54 ` Paul Eggert
2023-06-14 6:49 ` Jakub Jelinek
2023-06-14 11:46 ` Florian Weimer
2023-06-14 14:52 ` Joseph Myers
2023-06-14 15:50 ` Zack Weinberg
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=ZIiJR0hIyJwUnCUE@tucnak \
--to=jakub@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=joseph@codesourcery.com \
--cc=libc-alpha@sourceware.org \
--cc=polacek@redhat.com \
/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).