On Tue, 15 Jul 2014 12:51:02 -0700 Christopher Li <sparse@xxxxxxxxxxx> wrote: > On Tue, Jul 15, 2014 at 8:46 AM, Jeff Layton <jlayton@xxxxxxxxxxxxxxx> wrote: > > > > > > The problem here is that, at least with GCC on x86_64, a _Bool always > > seems to be end up being 8 bits (which makes sense -- how would you get > > a pointer to it otherwise?). If you declare and initialize an array like > > this: > > > > static _Bool boolarray[3] = { > > [0] = 1, > > [1] = 1, > > }; > > > > ...you get warnings like this (which are bogus): > > > > ./test.c:2:10: warning: Initializer entry defined twice > > ./test.c:3:10: also defined here > > > Right. The bug is in bits_to_bytes(). It round down instead of > round up. "bits_in_bool" is only a default value. It can be > reset to other value by the sparse application (sparse as > library). So the rest of the code still need to coupe with > it. > > How about fix bits_to_bytes() to round up: > > diff --git a/target.h b/target.h > index 1030c7c..140df3c 100644 > --- a/target.h > +++ b/target.h > @@ -49,7 +49,7 @@ extern int enum_alignment; > > static inline int bits_to_bytes(int bits) > { > - return bits >= 0 ? bits / bits_in_char : -1; > + return bits >= 0 ? (bits + bits_in_char - 1) / bits_in_char : -1; > } > This makes the bitfield.c validation test fail: TEST bitfield to integer promotion (bitfields.c) error: actual error text does not match expected error text. error: see bitfields.c.error.* for further investigation. --- bitfields.c.error.expected 2014-07-15 22:01:09.236942195 -0400 +++ bitfields.c.error.got 2014-07-15 22:01:09.237942176 -0400 @@ -0,0 +1,2 @@ +bitfields.c:16:19: warning: invalid access past the end of 'y' (0 1) +bitfields.c:16:19: warning: invalid access past the end of 'y' (0 1) Though I haven't looked in detail yet as to why it's failing. > > > > integer division, and that causes the above bogus warning. > > > > Reset it back to 8 bits, and add a validation test that creates the > > above array to ensure that we don't end up breaking it again. > > The rest of the change looks good. Thanks for the test case. > > My patch is not tested. If you are OK with it, submit a V2 > or I can fix the change for you. > > Thanks > > Chris -- Jeff Layton <jlayton@xxxxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html