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