On Thu, May 4, 2017 at 5:46 PM, Lance Richardson <lrichard@xxxxxxxxxx> wrote: >> 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. Indeed. > 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: It makes a lot of sense to not accept it. > www.open-std.org/JTC1/SC22/WG14/13677 > > As you say, probably best to leave this for now. Yes, even more so now. Thanks for the info. -- Luc -- 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