1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
// RUN: %clang_cc1 -emit-llvm-only -triple i386-apple-darwin9 -fdump-record-layouts %s | FileCheck %s
// rdar://8823265
#pragma pack(1)
struct _one_ms {
short m:9; // size is 2
int q:27; // size is 6
short w:13; // size is 8
short e:3; // size is 8
char r:4; // size is 9
char t:7; // size is 10
short y:16; // size is 12
short u:1; // size is 14
char i:2; // size is 15
int a; // size is 19
char o:6; // size is 20
char s:2; // size is 20
short d:10; // size is 22
short f:4; // size is 22
char b; // size is 23
char g:1; // size is 24
short h:13; // size is 26
char j:8; // size is 27
char k:5; // size is 28
char c; // size is 29
int l:28; // size is 33
char z:7; // size is 34
int x:20; // size is 38
} __attribute__((__ms_struct__));
typedef struct _one_ms one_ms;
static int a1[(sizeof(one_ms) == 38) - 1];
#pragma pack(2)
struct _two_ms {
short m:9;
int q:27;
short w:13;
short e:3;
char r:4;
char t:7;
short y:16;
short u:1;
char i:2;
int a;
char o:6;
char s:2;
short d:10;
short f:4;
char b;
char g:1;
short h:13;
char j:8;
char k:5;
char c;
int l:28;
char z:7;
int x:20;
} __attribute__((__ms_struct__));
typedef struct _two_ms two_ms;
static int a2[(sizeof(two_ms) == 42) - 1];
#pragma pack(4)
struct _four_ms {
short m:9;
int q:27;
short w:13;
short e:3;
char r:4;
char t:7;
short y:16;
short u:1;
char i:2;
int a;
char o:6;
char s:2;
short d:10;
short f:4;
char b;
char g:1;
short h:13;
char j:8;
char k:5;
char c;
int l:28;
char z:7;
int x:20;
} __attribute__((__ms_struct__));
typedef struct _four_ms four_ms;
static int a4[(sizeof(four_ms) == 48) - 1];
#pragma pack(8)
struct _eight_ms {
short m:9;
int q:27;
short w:13;
short e:3;
char r:4;
char t:7;
short y:16;
short u:1;
char i:2;
int a;
char o:6;
char s:2;
short d:10;
short f:4;
char b;
char g:1;
short h:13;
char j:8;
char k:5;
char c;
int l:28;
char z:7;
int x:20;
} __attribute__((__ms_struct__));
typedef struct _eight_ms eight_ms;
static int a8[(sizeof(eight_ms) == 48) - 1];
// rdar://15926990
#pragma pack(2)
struct test0 {
unsigned long a : 8;
unsigned long b : 8;
unsigned long c : 8;
unsigned long d : 10;
unsigned long e : 1;
} __attribute__((__ms_struct__));
// CHECK: 0 | struct test0
// CHECK-NEXT: 0:0-7 | unsigned long a
// CHECK-NEXT: 1:0-7 | unsigned long b
// CHECK-NEXT: 2:0-7 | unsigned long c
// CHECK-NEXT: 4:0-9 | unsigned long d
// CHECK-NEXT: 5:2-2 | unsigned long e
// CHECK-NEXT: | [sizeof=8, align=2]
static int test0[(sizeof(struct test0) == 8) ? 1 : -1];
|