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