struct mouse_button_str { unsigned char left : 1; unsigned char right : 1; unsigned char middle : 1; } button; static char fct (struct mouse_button_str newbutton) __attribute__ ((__noipa__)); static char fct (struct mouse_button_str newbutton) { char l = newbutton.left; char r = newbutton.right; char m = newbutton.middle; return l && r && m; } int main(void) { struct mouse_button_str newbutton1; newbutton1.left = 1; newbutton1.middle = 1; newbutton1.right = 1; if (!fct (newbutton1)) __builtin_abort (); newbutton1.left = 0; newbutton1.middle = 1; newbutton1.right = 1; if (fct (newbutton1)) __builtin_abort (); newbutton1.left = 1; newbutton1.middle = 0; newbutton1.right = 1; if (fct (newbutton1)) __builtin_abort (); newbutton1.left = 1; newbutton1.middle = 1; newbutton1.right = 0; if (fct (newbutton1)) __builtin_abort (); newbutton1.left = 1; newbutton1.middle = 0; newbutton1.right = 0; if (fct (newbutton1)) __builtin_abort (); newbutton1.left = 0; newbutton1.middle = 1; newbutton1.right = 0; if (fct (newbutton1)) __builtin_abort (); newbutton1.left = 0; newbutton1.middle = 0; newbutton1.right = 1; if (fct (newbutton1)) __builtin_abort (); newbutton1.left = 0; newbutton1.middle = 0; newbutton1.right = 0; if (fct (newbutton1)) __builtin_abort (); }