[PATCH] Attribute parsing following labels

Aaron Ballman aaron at aaronballman.com
Sat Oct 5 14:09:20 PDT 2013


Here is another attempt at this patch, without the tentative parsing.

Thanks!

~Aaron

On Tue, Oct 1, 2013 at 12:43 PM, Richard Smith <richard at metafoo.co.uk> wrote:
> 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 --------------
A non-text attachment was scrubbed...
Name: LabelAttr.patch
Type: application/octet-stream
Size: 2713 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131005/603f4b88/attachment.obj>


More information about the cfe-commits mailing list