150
|
1 // RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
|
|
2 // expected-no-diagnostics
|
|
3
|
|
4 #include <stddef.h>
|
|
5
|
|
6 #pragma pack(4)
|
|
7
|
|
8 // Baseline
|
|
9 struct s0 {
|
|
10 char f0;
|
|
11 int f1;
|
|
12 };
|
|
13 extern int a0[offsetof(struct s0, f1) == 4 ? 1 : -1];
|
|
14
|
|
15 #pragma pack(push, 2)
|
|
16 struct s1 {
|
|
17 char f0;
|
|
18 int f1;
|
|
19 };
|
|
20 extern int a1[offsetof(struct s1, f1) == 2 ? 1 : -1];
|
|
21 #pragma pack(pop)
|
|
22
|
|
23 #pragma pack(1)
|
|
24 struct s3_0 {
|
|
25 char f0;
|
|
26 int f1;
|
|
27 };
|
|
28 #pragma pack()
|
|
29 struct s3_1 {
|
|
30 char f0;
|
|
31 int f1;
|
|
32 };
|
|
33 extern int a3_0[offsetof(struct s3_0, f1) == 1 ? 1 : -1];
|
|
34 extern int a3_1[offsetof(struct s3_1, f1) == 4 ? 1 : -1];
|
|
35
|
|
36 // pack(0) is like pack()
|
|
37 #pragma pack(1)
|
|
38 struct s4_0 {
|
|
39 char f0;
|
|
40 int f1;
|
|
41 };
|
|
42 #pragma pack(0)
|
|
43 struct s4_1 {
|
|
44 char f0;
|
|
45 int f1;
|
|
46 };
|
|
47 extern int a4_0[offsetof(struct s4_0, f1) == 1 ? 1 : -1];
|
|
48 extern int a4_1[offsetof(struct s4_1, f1) == 4 ? 1 : -1];
|
|
49
|
|
50 void f() {
|
|
51 #pragma pack(push, 2)
|
|
52 struct s5_0 {
|
|
53 char f0;
|
|
54 struct s2_4_0 {
|
|
55 int f0;
|
|
56 } f1;
|
|
57 };
|
|
58 #pragma pack(pop)
|
|
59 extern int s5_0[offsetof(struct s5_0, f1) == 2 ? 1 : -1];
|
|
60 }
|