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