bool a(bool in)
{
  printf();
  return in;
}

bool b(bool in)
{
  printf();
  return in;
}


  do {								\
    x = a(X) O b(Y);						\
    printf(
  } while(false);

int main()
{
  bool x;

  TEST(false, true, &&); 
  TEST(true, false, ||); 
  TEST(true, false, &&); 
  TEST(false, false, ||); 

  return 0;
}