> From: "Luc Van Oostenryck" <luc.vanoostenryck@xxxxxxxxx> > To: "Lance Richardson" <lrichard@xxxxxxxxxx> > Cc: "Linux-Sparse" <linux-sparse@xxxxxxxxxxxxxxx> > Sent: Thursday, 4 May, 2017 10:58:35 AM > Subject: Re: [PATCH v4] sparse: add support for _Static_assert > > On Thu, May 04, 2017 at 09:53:50AM -0400, Lance Richardson wrote: > > Thanks for the quick feedback, will incorporate in v5. > > I also saw a small issue, possibly related to the problem with > the mixup between 'declaration-list' and 'struct-declarator-list' > that you noticed. In the following code, the static assert is not > recognized: > void foo(void) > { > int i = 0; > for (_Static_assert(1, "ok"); 1; ) > ; > for (_Static_assert(0, "ko"); 1; ) > ; > } > > It should because (since C99) the first part of the for-statement > is just a 'declaration', which include the static assert. > Not that it's very important, though. > > Probably, it's best to leave it as is for the moment and just > add a new test case, annotated with 'check-known-to-fail'. > > -- Luc > Hi Luc, I'm not sure it should be accepted; the standard doc says: "The declaration part of a for statement shall only declare identifiers for objects having storage class auto or register." But _Static_assert() doesn't declare an identifier. gcc accepts this syntax, although clang does not. I did find this discussion: https://reviews.llvm.org/D9113 Which points to a working group discussion that made it sound as though _Static_assert() should not be accepted in for-loop declarations: www.open-std.org/JTC1/SC22/WG14/13677 As you say, probably best to leave this for now. Lance -- 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