blob: 25be5539783e6ef193937d3c7ea05700dbc4b4eb [file] [log] [blame]
Daniel Dunbard7d5f022009-03-24 02:24:46 +00001// RUN: clang-cc -triple i686-apple-darwin9 %s -fsyntax-only -verify
Daniel Dunbar3b0db902008-10-16 02:34:03 +00002
3#include <stddef.h>
4
5#pragma pack(4)
6
7// Baseline
8struct s0 {
9 char f0;
10 int f1;
11};
12extern int a0[offsetof(struct s0, f1) == 4 ? 1 : -1];
13
14#pragma pack(push, 2)
15struct s1 {
16 char f0;
17 int f1;
18};
19extern int a1[offsetof(struct s1, f1) == 2 ? 1 : -1];
20#pragma pack(pop)
21
22// Test scope of definition
23
24#pragma pack(push, 2)
25struct s2_0 {
26#pragma pack(pop)
27 char f0;
28 int f1;
29};
30extern int a2_0[offsetof(struct s2_0, f1) == 2 ? 1 : -1];
31
32struct s2_1 {
33 char f0;
34#pragma pack(push, 2)
35 int f1;
36#pragma pack(pop)
37};
38extern int a2_1[offsetof(struct s2_1, f1) == 4 ? 1 : -1];
39
40struct s2_2 {
41 char f0;
42 int f1;
43#pragma pack(push, 2)
44};
45#pragma pack(pop)
46extern int a2_2[offsetof(struct s2_2, f1) == 4 ? 1 : -1];
47
48struct s2_3 {
49 char f0;
50#pragma pack(push, 2)
51 struct s2_3_0 {
52#pragma pack(pop)
53 int f0;
54 } f1;
55};
56extern int a2_3[offsetof(struct s2_3, f1) == 2 ? 1 : -1];
57
58struct s2_4 {
59 char f0;
60 struct s2_4_0 {
61 int f0;
62#pragma pack(push, 2)
63 } f1;
64#pragma pack(pop)
65};
66extern int a2_4[offsetof(struct s2_4, f1) == 4 ? 1 : -1];
Daniel Dunbar79cd1162009-03-06 20:45:54 +000067
68#pragma pack(1)
69struct s3_0 {
70 char f0;
71 int f1;
72};
73#pragma pack()
74struct s3_1 {
75 char f0;
76 int f1;
77};
78extern int a3_0[offsetof(struct s3_0, f1) == 1 ? 1 : -1];
79extern int a3_1[offsetof(struct s3_1, f1) == 4 ? 1 : -1];
80
81// pack(0) is like pack()
82#pragma pack(1)
83struct s4_0 {
84 char f0;
85 int f1;
86};
87#pragma pack(0)
88struct s4_1 {
89 char f0;
90 int f1;
91};
92extern int a4_0[offsetof(struct s4_0, f1) == 1 ? 1 : -1];
93extern int a4_1[offsetof(struct s4_1, f1) == 4 ? 1 : -1];