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 ();
}