xref: /illumos-gate/usr/src/tools/smatch/src/validation/optim/bitfield-size.c (revision 5801b0f01c3c34499a929ed96164a5a68b470945)
1 struct bfu {
2 	unsigned int a:4;
3 	unsigned int  :2;
4 	unsigned int b:4;
5 };
6 unsigned int get__bfu_a(struct bfu bf) { return bf.a; }
7 unsigned int get__bfu_b(struct bfu bf) { return bf.b; }
8 unsigned int get_pbfu_a(struct bfu *bf) { return bf->a; }
9 unsigned int get_pbfu_b(struct bfu *bf) { return bf->b; }
10 
11 
12 struct bfs {
13 	signed int a:4;
14 	signed int  :2;
15 	signed int b:4;
16 };
17 signed int get__bfs_a(struct bfs bf) { return bf.a; }
18 signed int get__bfs_b(struct bfs bf) { return bf.b; }
19 signed int get_pbfs_a(struct bfs *bf) { return bf->a; }
20 signed int get_pbfs_b(struct bfs *bf) { return bf->b; }
21 
22 
23 struct bfi {
24 	int a:4;
25 	int  :2;
26 	int b:4;
27 };
28 unsigned int get__bfi_a(struct bfi bf) { return bf.a; }
29 unsigned int get__bfi_b(struct bfi bf) { return bf.b; }
30 unsigned int get_pbfi_a(struct bfi *bf) { return bf->a; }
31 unsigned int get_pbfi_b(struct bfi *bf) { return bf->b; }
32 
33 /*
34  * check-name: bitfield size
35  * check-command: test-linearize -Wno-decl $file
36  * check-output-ignore
37  *
38  * check-output-excludes: and\\..*\\$960
39  * check-output-excludes: zext\\.
40  * check-output-pattern(8): and\\..*\\$15
41  * check-output-pattern(4): sext\\.
42  * check-output-pattern(4): trunc\\.4
43  * check-output-pattern(6): lsr\\..*\\$6
44  */
45