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