1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li // Note that this puts the expected lines before the directives to work around 4*67e74705SXin Li // limitations in the -verify mode. 5*67e74705SXin Li 6*67e74705SXin Li /* expected-warning {{missing '(' after '#pragma pack'}}*/ #pragma pack 10 7*67e74705SXin Li #pragma pack() 8*67e74705SXin Li #pragma pack(8) 9*67e74705SXin Li 10*67e74705SXin Li /*expected-warning {{unknown action for '#pragma pack'}}*/ #pragma pack(hello) 11*67e74705SXin Li #pragma pack(push) 12*67e74705SXin Li #pragma pack(pop) 13*67e74705SXin Li 14*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,) 15*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,) 16*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(pop,) 17*67e74705SXin Li 18*67e74705SXin Li #pragma pack(push,i) 19*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,i, 20*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,i,) 21*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,i,help) 22*67e74705SXin Li 23*67e74705SXin Li #pragma pack(push,8) 24*67e74705SXin Li /* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push,8, 25*67e74705SXin Li /* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push,8,) 26*67e74705SXin Li /* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push,i,8 27*67e74705SXin Li #pragma pack(push,i,8) 28*67e74705SXin Li 29*67e74705SXin Li /* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push 30*67e74705SXin Li 31*67e74705SXin Li _Pragma("pack(push)") 32*67e74705SXin Li /* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ _Pragma("pack(push,)") 33*67e74705SXin Li 34*67e74705SXin Li // PR13580 35*67e74705SXin Li struct S 36*67e74705SXin Li { 37*67e74705SXin Li char a[3]; 38*67e74705SXin Li #pragma pack(1) 39*67e74705SXin Li struct T 40*67e74705SXin Li { 41*67e74705SXin Li char b; 42*67e74705SXin Li int c; 43*67e74705SXin Li } d; 44*67e74705SXin Li #pragma pack() 45*67e74705SXin Li int e; 46*67e74705SXin Li }; 47*67e74705SXin Li 48*67e74705SXin Li _Pragma("pack(push, 1)") struct PR28094 { 49*67e74705SXin Li int a; 50*67e74705SXin Li } _Pragma("pack(pop)"); 51