[PATCH] Attribute parsing following labels

Aaron Ballman aaron at aaronballman.com
Tue Oct 1 05:26:31 PDT 2013


On Mon, Sep 30, 2013 at 6:03 PM, Richard Smith <richard at metafoo.co.uk> wrote:
> It should be possible to handle this case without tentative parsing or
> lookahead. Consume the attributes onto a new list; if the next token is a
> semicolon, then push them into the label's attribute list; otherwise,
> ParseStatementOrDeclarationAfterAttributes.

Ah, thanks!

> What does GCC do if there are #pragmas between the case label and the
> attribute, and/or between the attribute and the semicolon?

void func(void) {
label: __attribute__((unused))
#pragma message "stuff"
;
}

Prints the message, no warning about the label or the attribute.

void func(void) {
label:
#pragma message "stuff"
__attribute__((unused))
;
}

Prints the message, then prints an error about expecting an expression
before the attribute, and a warning for the label being unused.

~Aaron



More information about the cfe-commits mailing list