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)9fct (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)17int 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 } 64