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)13static int get_size(void) 14 { 15 return sizeof(struct sa); 16 } 17 chk_align(struct sa sa,struct sa * p)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 fp0(struct sa * sa)24static int fp0(struct sa *sa) 25 { 26 return sa->c; 27 } 28 fpx(struct sa * sa,int idx)29static int fpx(struct sa *sa, int idx) 30 { 31 return sa[idx].c; 32 } 33 fglobal(void)34static int fglobal(void) 35 { 36 extern struct sa g; 37 return g.c; 38 } 39 40 static struct sa l; flocal(void)41static int flocal(void) 42 { 43 return l.c; 44 } 45 46 main(void)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