Re: [PATCH 1/1] vsprintf: optimize decimal conversion (again)

From: Michal Nazarewicz
Date: Tue Mar 27 2012 - 13:12:52 EST


On Mon, 26 Mar 2012 22:20:52 +0200, H. Peter Anvin <hpa@xxxxxxxxx> wrote:

On 03/26/2012 01:13 PM, Andrew Morton wrote:
On Mon, 26 Mar 2012 21:56:38 +0200
Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> wrote:

+#if BITS_PER_LONG != 32 || (~(0ULL)>>1) != ((1ULL<<63)-1)

What's this for?

The second check should be just BITS_PER_LONG_LONG != 64,
but we don't have BITS_PER_LONG_LONG.

So let's add BITS_PER_LONG_LONG rather than hacking around its absence!

First of all, the #if is wrong: the preprocessor doesn't support data
types and does all arithmetic at (u)intmax_t precision.

Maybe a regular âifâ instead of macro would suffice here? Compiler should
be smart enough to optimise out the dead path.

As far as BITS_PER_LONG_LONG, there are tons of places in the kernel
which already require that long long is exactly 64 bits. That may or
may not be a good thing, but for right now one could simply:

#define BITS_PER_LONG_LONG 64

--
Best regards, _ _
.o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o
..o | Computer Science, MichaÅ âmina86â Nazarewicz (o o)
ooo +----<email/xmpp: mpn@xxxxxxxxxx>--------------ooO--(_)--Ooo--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/