r179743 - [Parser] Handle #pragma pack/align inside C structs.

Argyrios Kyrtzidis akyrtzi at gmail.com
Thu Apr 18 10:54:51 PDT 2013


On Apr 18, 2013, at 8:04 AM, jahanian <fjahanian at apple.com> wrote:

> This needs an IRGen test to show that pragma is effective.

In r179777.

> 
> - Fariborz
> 
> On Apr 17, 2013, at 6:42 PM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
> 
>> Author: akirtzidis
>> Date: Wed Apr 17 20:42:35 2013
>> New Revision: 179743
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=179743&view=rev
>> Log:
>> [Parser] Handle #pragma pack/align inside C structs.
>> 
>> Fixes PR13580. Patch by Serge Pavlov!
>> 
>> Modified:
>>    cfe/trunk/lib/Parse/ParseDecl.cpp
>>    cfe/trunk/test/Parser/pragma-options.c
>>    cfe/trunk/test/Parser/pragma-pack.c
>> 
>> Modified: cfe/trunk/lib/Parse/ParseDecl.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=179743&r1=179742&r2=179743&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Parse/ParseDecl.cpp (original)
>> +++ cfe/trunk/lib/Parse/ParseDecl.cpp Wed Apr 17 20:42:35 2013
>> @@ -3230,6 +3230,16 @@ void Parser::ParseStructUnionBody(Source
>>       continue;
>>     }
>> 
>> +    if (Tok.is(tok::annot_pragma_pack)) {
>> +      HandlePragmaPack();
>> +      continue;
>> +    }
>> +
>> +    if (Tok.is(tok::annot_pragma_align)) {
>> +      HandlePragmaAlign();
>> +      continue;
>> +    }
>> +
>>     if (!Tok.is(tok::at)) {
>>       struct CFieldCallback : FieldCallback {
>>         Parser &P;
>> 
>> Modified: cfe/trunk/test/Parser/pragma-options.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/pragma-options.c?rev=179743&r1=179742&r2=179743&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/Parser/pragma-options.c (original)
>> +++ cfe/trunk/test/Parser/pragma-options.c Wed Apr 17 20:42:35 2013
>> @@ -20,3 +20,15 @@
>> #pragma align=reset
>> #pragma align=mac68k
>> #pragma align=power
>> +
>> +// PR13580
>> +struct S
>> +{
>> +  char a[3];
>> +#pragma align=packed
>> +  struct T
>> +  {
>> +    char b;
>> +    int c;
>> +  } d;
>> +};
>> 
>> Modified: cfe/trunk/test/Parser/pragma-pack.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/pragma-pack.c?rev=179743&r1=179742&r2=179743&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/Parser/pragma-pack.c (original)
>> +++ cfe/trunk/test/Parser/pragma-pack.c Wed Apr 17 20:42:35 2013
>> @@ -30,3 +30,17 @@
>> 
>> _Pragma("pack(push)")
>> /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ _Pragma("pack(push,)") 
>> +
>> +// PR13580
>> +struct S
>> +{
>> +  char a[3];
>> +#pragma pack(1)
>> +  struct T
>> +  {
>> +    char b;
>> +    int c;
>> +  } d;
>> +#pragma pack()
>> +  int e;
>> +};
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130418/9a9f2e6c/attachment.html>


More information about the cfe-commits mailing list