LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Segher Boessenkool <segher@kernel.crashing.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Linux Arch Mailing List <linux-arch@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	David Brownell <dbrownell@users.sourceforge.net>
Subject: Re: [PATCH 1/2] Add C99-style constructor macros for specific-sized integers
Date: Mon, 3 Mar 2008 04:20:37 +0100	[thread overview]
Message-ID: <7e0381d9932a37ad78f0c38b2a3c6a03@kernel.crashing.org> (raw)
In-Reply-To: <4a8566f54ff84f498c5c0c0340076c296b1840e6@tazenda.hos.anvin.org>

> Although it is fully legal and correct C to write something like:
>
> 	 (u64)0x123456789abcdef
>
> .. gcc will issue a warning on 32-bit systems that 0x123456789abcdef
> is too big for an "int", and that it has been transparently promoted,
> even though it is obvious that that is what the user intended in the
> first place.

[It says it is too big for 'long', actually].

That's because this is not valid ISO C90.  GCC tries to help you out
by using the C99 rules (it has to do something, and terminating with
an error would be a bit rude).  Perhaps the kernel should use C99
mode (-std=gnu99, to get the GNU C extensions).

> +#define S8_C(x)	 x
> +#define U8_C(x)  x ## U
> +#define S16_C(x) x
> +#define U16_C(x) x ## U
> +#define S32_C(x) x
> +#define U32_C(x) x ## U

These are unnecessary, Linux requires an int to be at least 32 bits.

> +#define S64_C(x) x ## LL
> +#define U64_C(x) x ## ULL

Here you can use LL resp. ULL on all archs.


Do these new macros really buy anything over just writing LL in the
few places that 64-bit constants are used?


Segher


  parent reply	other threads:[~2008-03-03  3:21 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-03  0:09 H. Peter Anvin
2008-03-03  0:09 ` [PATCH 2/2] Use U64_C() instead of casts in kernel/time.c H. Peter Anvin
2008-03-03  2:38 ` [PATCH 1/2] Add C99-style constructor macros for specific-sized integers Matthew Wilcox
2008-03-03  4:43   ` H. Peter Anvin
2008-03-03  6:20     ` Al Viro
2008-03-03  6:12       ` H. Peter Anvin
2008-03-03  6:32         ` Al Viro
2008-03-03  6:28           ` H. Peter Anvin
2008-03-03  3:20 ` Segher Boessenkool [this message]
2008-03-03  4:14   ` David Brownell
2008-03-03  4:50     ` H. Peter Anvin
2008-03-03  4:45   ` H. Peter Anvin
2008-03-03 20:23     ` Segher Boessenkool
2008-03-03 10:57 ` David Howells
2008-03-03 11:43   ` Russell King
2008-03-03 12:40     ` Sam Ravnborg
2008-03-03 17:03       ` H. Peter Anvin
2008-03-03 12:15   ` David Howells

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=7e0381d9932a37ad78f0c38b2a3c6a03@kernel.crashing.org \
    --to=segher@kernel.crashing.org \
    --cc=akpm@linux-foundation.org \
    --cc=dbrownell@users.sourceforge.net \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --subject='Re: [PATCH 1/2] Add C99-style constructor macros for specific-sized integers' \
    /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

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 NNTP newsgroup(s).