Re: [PATCH V2] sparse: Allow override of sizeof(bool) warning

From: H. Peter Anvin
Date: Wed Feb 26 2014 - 22:43:35 EST


sizeof(_Bool), like for many other types, is ABI-dependent, but that doesn't mean it is illegitimate.

I don't think C99 says that it is invalid (which means C99 doesn't permit is to be a packed bitmap.)

On February 26, 2014 7:38:46 PM PST, Joe Perches <joe@xxxxxxxxxxx> wrote:
>(adding Ben Pfaff and Christopher Li)
>
>On Wed, 2014-02-26 at 19:29 -0800, H. Peter Anvin wrote:
>> On 02/26/2014 06:58 PM, Josh Triplett wrote:
>> > On Wed, Feb 26, 2014 at 06:53:14PM -0800, Joe Perches wrote:
>> >> Allow an override to emit or not the sizeof(bool) warning
>> >> Add a description to the manpage.
>> >>
>> >> Signed-off-by: Joe Perches <joe@xxxxxxxxxxx>
>> >
>> > Reviewed-by: Josh Triplett <josh@xxxxxxxxxxxxxxxx>
>> >
>>
>> I have to admit that this particular warning is a bit odd to me. I'm
>> wondering what kind of bugs it was intended to catch.
>>
>> In particular, things that incorrectly assumes the size of bool to be
>> anything in particular would seem unlikely to actually use sizeof().
>
>Dunno, the commit log for the commit that added it doesn't quite
>match the code and is seemingly unaware that the c99 spec doesn't
>specify sizeof(bool).
>
>Ben Pfaff <blp@xxxxxxxxxx>
>Date: Wed May 4 16:39:54 2011 -0700
>
> evaluate: Allow sizeof(_Bool) to succeed.
>
> Without this commit, sizeof(_Bool) provokes an error with "cannot size
>expression" because _Bool is a 1-bit type and thus not a multiple of a
>full
>byte in size. But sizeof(_Bool) is valid C that should evaluate to 1,
>so
> this commit fixes the problem and adds a regression test.
>
> Signed-off-by: Ben Pfaff <blp@xxxxxxxxxx>
> Signed-off-by: Christopher Li <sparse@xxxxxxxxxxx>

--
Sent from my mobile phone. Please pardon brevity and lack of formatting.
--
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/