db/fixup_kernel.sh: fix clear_user() handling
[smatch.git] / validation / packed-bitfield0.c
blob2e20916176f16de74d3c4438d12103b05942ea85
1 #define alignof(X) __alignof__(X)
2 #define __packed __attribute__((packed))
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)");
13 static int get_size(void)
15 return sizeof(struct sa);
18 static void chk_align(struct sa sa, struct sa *p)
20 _Static_assert(alignof(sa) == 1, "alignof(sa)");
21 _Static_assert(alignof(*p) == 1, "alignof(*p)");
24 static int fp0(struct sa *sa)
26 return sa->c;
29 static int fpx(struct sa *sa, int idx)
31 return sa[idx].c;
34 static int fglobal(void)
36 extern struct sa g;
37 return g.c;
40 static struct sa l;
41 static int flocal(void)
43 return l.c;
47 int main(void)
49 extern void fun(struct sa *);
50 struct sa sa = { 0 };
52 fun(&sa);
53 return 0;
57 * check-name: packed-bitfield0