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