[PATCH] Attribute parsing following labels

Richard Smith richard at metafoo.co.uk
Tue Oct 1 09:43:20 PDT 2013


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" <aaron at aaronballman.com> wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131001/d5f28087/attachment.html>


More information about the cfe-commits mailing list