blob: 95bbe1fe7e944b9e91f0a5e25d11d94f98db2812 [file] [log] [blame]
Eli Friedmana91d38a2011-12-02 02:38:48 +00001// 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
8struct s0 {
9 char f1;
10 unsigned f2 : 32;
11 char f3;
12};
13extern int check[sizeof(struct s0) == 6 ? 1 : -1];
14
15struct s1 {
16 char f1;
17 unsigned : 0;
18 char f3;
19};
20extern int check[sizeof(struct s1) == 5 ? 1 : -1];
21
22struct s2 {
23 char f1;
24 unsigned : 0;
25 unsigned f3 : 8;
26 char f4;
27};
28extern int check[sizeof(struct s2) == 6 ? 1 : -1];
29
30struct s3 {
31 char f1;
32 unsigned : 0;
33 unsigned f3 : 16;
34 char f4;
35};
36extern int check[sizeof(struct s3) == 8 ? 1 : -1];
37extern int check[offsetof(struct s3, f4) == 6 ? 1 : -1];
38
39struct s4 {
40 char f1;
41 unsigned f2 : 8;
42 char f3;
43};
44extern int check[sizeof(struct s4) == 4 ? 1 : -1];
45extern int check[offsetof(struct s4, f3) == 2 ? 1 : -1];