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

Thanks!

~Aaron

On Tue, Oct 1, 2013 at 12:43 PM, Richard Smith <[email protected]> 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" <[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

Attachment: LabelAttr.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to