[Parser] Handle #pragma pack/align inside C structs.
Fixes PR13580. Patch by Serge Pavlov! llvm-svn: 179743
This commit is contained in:
parent
e089497121
commit
71c12fb4a3
|
@ -3230,6 +3230,16 @@ void Parser::ParseStructUnionBody(SourceLocation RecordLoc,
|
|||
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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue