1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -fsyntax-only -verify -ffreestanding 2*67e74705SXin Li // expected-no-diagnostics 3*67e74705SXin Li // <rdar://problem/10494810> and PR9560 4*67e74705SXin Li // Check #pragma pack handling with bitfields. 5*67e74705SXin Li 6*67e74705SXin Li #include <stddef.h> 7*67e74705SXin Li #pragma pack(2) 8*67e74705SXin Li 9*67e74705SXin Li struct s0 { 10*67e74705SXin Li char f1; 11*67e74705SXin Li unsigned f2 : 32; 12*67e74705SXin Li char f3; 13*67e74705SXin Li }; 14*67e74705SXin Li extern int check[sizeof(struct s0) == 6 ? 1 : -1]; 15*67e74705SXin Li 16*67e74705SXin Li struct s1 { 17*67e74705SXin Li char f1; 18*67e74705SXin Li unsigned : 0; 19*67e74705SXin Li char f3; 20*67e74705SXin Li }; 21*67e74705SXin Li extern int check[sizeof(struct s1) == 5 ? 1 : -1]; 22*67e74705SXin Li 23*67e74705SXin Li struct s2 { 24*67e74705SXin Li char f1; 25*67e74705SXin Li unsigned : 0; 26*67e74705SXin Li unsigned f3 : 8; 27*67e74705SXin Li char f4; 28*67e74705SXin Li }; 29*67e74705SXin Li extern int check[sizeof(struct s2) == 6 ? 1 : -1]; 30*67e74705SXin Li 31*67e74705SXin Li struct s3 { 32*67e74705SXin Li char f1; 33*67e74705SXin Li unsigned : 0; 34*67e74705SXin Li unsigned f3 : 16; 35*67e74705SXin Li char f4; 36*67e74705SXin Li }; 37*67e74705SXin Li extern int check[sizeof(struct s3) == 8 ? 1 : -1]; 38*67e74705SXin Li extern int check[offsetof(struct s3, f4) == 6 ? 1 : -1]; 39*67e74705SXin Li 40*67e74705SXin Li struct s4 { 41*67e74705SXin Li char f1; 42*67e74705SXin Li unsigned f2 : 8; 43*67e74705SXin Li char f3; 44*67e74705SXin Li }; 45*67e74705SXin Li extern int check[sizeof(struct s4) == 4 ? 1 : -1]; 46*67e74705SXin Li extern int check[offsetof(struct s4, f3) == 2 ? 1 : -1]; 47