After analyzing net/sunrpc/xprtsock.i, I managed to reproduce the problem with
the following test case:

#define barrier() __asm__ __volatile__("": : :"memory")

static void f(void)
{
        barrier();
l:
        barrier();
}


Apparently sparse doesn't like __asm__ __volatile__ after a label.  Looks like
the change to enable attributes on labels makes Sparse interpret the __asm__
as an attribute on the label, not as a statement.  If I locally revert the
label attributes change, aec53c938c34c47cdbdd6824552e0f2a5104b1cb, this test
case compiles without warning, as does net/sunrpc/xprtsock.c.

The label attributes change needs some additional work, to make it only handle
attribute and __attribute__, and nothing else.

- Josh Triplett

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to