• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #define alignof(X)	__alignof__(X)
2 #define __packed	__attribute__((packed))
3 
4 struct 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 
get_size(void)13 static int get_size(void)
14 {
15 	return sizeof(struct sa);
16 }
17 
chk_align(struct sa sa,struct sa * p)18 static 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 
fp0(struct sa * sa)24 static int fp0(struct sa *sa)
25 {
26 	return sa->c;
27 }
28 
fpx(struct sa * sa,int idx)29 static int fpx(struct sa *sa, int idx)
30 {
31 	return sa[idx].c;
32 }
33 
fglobal(void)34 static int fglobal(void)
35 {
36 	extern struct sa g;
37 	return g.c;
38 }
39 
40 static struct sa l;
flocal(void)41 static int flocal(void)
42 {
43 	return l.c;
44 }
45 
46 
main(void)47 int 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