OK, that makes some sense, since the pragma acts like a statement that
cannot have an attribute.
On 1 Oct 2013 05:26, "Aaron Ballman" <[email protected]> wrote:

> On Mon, Sep 30, 2013 at 6:03 PM, Richard Smith <[email protected]>
> 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
>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to