blob: 4aac832ed870cc812a5b0ed765401fe1f22d9f71 [file] [log] [blame]
Fariborz Jahanian07ceb0a2011-05-10 19:00:50 +00001// RUN: %clang_cc1 -emit-llvm-only -triple i386-apple-darwin9 %s
2// rdar://8823265
3
4#pragma pack(1)
5struct _two_ms {
6 short m:9; // size is 2
7 int q:27; // size is 6
8 short w:13; // size is 8
9 short e:3; // size is 8
10 char r:4; // size is 9
11 char t:7; // size is 10
12 short y:16; // size is 12
13// clang and gcc start differing here. clang seems to follow the rules.
14 short u:1; // size is clang: 13 gcc:14
15 char i:2; // size is 14
16 int a; // size is 18
17 char o:6; // size is 19
18 char s:2; // size is 19
19 short d:10; // size is 21
20 short f:4; // size is 21
21 char b; // size is 22
22 char g:1; // size is 23
23 short h:13; // size is 25
24 char j:8; // size is 26
25 char k:5; // size is 27
26 char c; // size is 28
27 int l:28; // size is 32
28 char z:7; // size is 33
29 int x:20; // size is clang: 36 gcc:38
30 } __attribute__((__ms_struct__));
31typedef struct _two_ms two_ms;
32
33// gcc says size is 38, but its does not seem right!
34static int a1[(sizeof(two_ms) == 36) - 1];