1#define alignof(X)	__alignof__(X)
2#define __packed	__attribute__((packed))
3
4struct sa {
5	int a:7;
6	int c:10;
7	int b:2;
8} __packed;
9_Static_assert(alignof(struct sa) == 1, "alignof(struct sa)");
10_Static_assert( sizeof(struct sa) == 3,  "sizeof(struct sa)");
11
12
13static int get_size(void)
14{
15	return sizeof(struct sa);
16}
17
18static void chk_align(struct sa sa, struct sa *p)
19{
20	_Static_assert(alignof(sa) == 1, "alignof(sa)");
21	_Static_assert(alignof(*p) == 1, "alignof(*p)");
22}
23
24static int fp0(struct sa *sa)
25{
26	return sa->c;
27}
28
29static int fpx(struct sa *sa, int idx)
30{
31	return sa[idx].c;
32}
33
34static int fglobal(void)
35{
36	extern struct sa g;
37	return g.c;
38}
39
40static struct sa l;
41static int flocal(void)
42{
43	return l.c;
44}
45
46
47int main(void)
48{
49	extern void fun(struct sa *);
50	struct sa sa = { 0 };
51
52	fun(&sa);
53	return 0;
54}
55
56/*
57 * check-name: packed-bitfield0
58 */
59