1 // Test this without pch.
2 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DSET
3 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DRESET
4 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH
5 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH_POP
6 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH_POP_LABEL
7 
8 // Test with pch.
9 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DSET -emit-pch -o %t
10 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DSET -verify -include-pch %t
11 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DRESET -emit-pch -o %t
12 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DRESET -verify -include-pch %t
13 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH -emit-pch -o %t
14 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH -verify -include-pch %t
15 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP -emit-pch -o %t
16 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP -verify -include-pch %t
17 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP_LABEL -emit-pch -o %t
18 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP_LABEL -verify -include-pch %t
19 
20 #ifndef HEADER
21 #define HEADER
22 
23 #ifdef SET
24 #pragma pack(1)
25 #endif
26 
27 #ifdef RESET
28 #pragma pack(2)
29 #pragma pack ()
30 #endif
31 
32 #ifdef PUSH
33 #pragma pack(1)
34 #pragma pack (push, 2)
35 #endif
36 
37 #ifdef PUSH_POP
38 #pragma pack (push, 4)
39 #pragma pack (push, 2)
40 #pragma pack (pop)
41 #endif
42 
43 #ifdef PUSH_POP_LABEL
44 #pragma pack (push, a, 4)
45 #pragma pack (push, b, 1)
46 #pragma pack (push, c, 2)
47 #pragma pack (pop, b)
48 #endif
49 
50 #else
51 
52 #ifdef SET
53 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 1}}
54 #pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
55 #endif
56 
57 #ifdef RESET
58 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
59 #pragma ()
60 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
61 #endif
62 
63 #ifdef PUSH
64 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 2}}
65 #pragma pack(pop)
66 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 1}}
67 #pragma pack ()
68 #pragma pack (show) // expected-warning {{value of #pragma pack(show) == 8}}
69 #pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
70 #endif
71 
72 #ifdef PUSH_POP
73 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}}
74 #pragma pack(pop)
75 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
76 #pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
77 #endif
78 
79 #ifdef PUSH_POP_LABEL
80 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}}
81 #pragma pack(pop, c)
82 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}}
83 #pragma pack(pop, a)
84 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
85 #pragma pack(pop)  // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
86 #pragma pack(pop, b) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
87 #pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
88 #endif
89 
90 #endif
91