1 struct mouse_button_str {
2         unsigned char left      : 1;
3         unsigned char right     : 1;
4         unsigned char middle    : 1;
5         } button;
6 
7 static char fct (struct mouse_button_str newbutton) __attribute__ ((__noipa__));
8 static char
fct(struct mouse_button_str newbutton)9 fct (struct mouse_button_str newbutton)
10 {
11   char l = newbutton.left;
12   char r = newbutton.right;
13   char m = newbutton.middle;
14 	return l || r || m;
15 }
16 
main(void)17 int main(void)
18 {
19   struct mouse_button_str newbutton1;
20   newbutton1.left = 1;
21   newbutton1.middle = 1;
22   newbutton1.right = 1;
23   if (!fct (newbutton1))
24     __builtin_abort ();
25 
26   newbutton1.left = 0;
27   newbutton1.middle = 1;
28   newbutton1.right = 1;
29   if (!fct (newbutton1))
30     __builtin_abort ();
31   newbutton1.left = 1;
32   newbutton1.middle = 0;
33   newbutton1.right = 1;
34   if (!fct (newbutton1))
35     __builtin_abort ();
36   newbutton1.left = 1;
37   newbutton1.middle = 1;
38   newbutton1.right = 0;
39   if (!fct (newbutton1))
40     __builtin_abort ();
41 
42 
43   newbutton1.left = 1;
44   newbutton1.middle = 0;
45   newbutton1.right = 0;
46   if (!fct (newbutton1))
47     __builtin_abort ();
48   newbutton1.left = 0;
49   newbutton1.middle = 1;
50   newbutton1.right = 0;
51   if (!fct (newbutton1))
52     __builtin_abort ();
53   newbutton1.left = 0;
54   newbutton1.middle = 0;
55   newbutton1.right = 1;
56   if (!fct (newbutton1))
57     __builtin_abort ();
58   newbutton1.left = 0;
59   newbutton1.middle = 0;
60   newbutton1.right = 0;
61   if (fct (newbutton1))
62     __builtin_abort ();
63 }