1  /* { dg-do link } */
       2  /* { dg-options "-O2" } */
       3  
       4  extern void link_error (void);
       5  
       6  
       7  void test(int x)
       8  {
       9    if ((x & ~x) != 0)
      10      link_error ();
      11    if ((~x & x) != 0)
      12      link_error ();
      13  
      14    if ((x ^ ~x) != -1)
      15      link_error ();
      16    if ((~x ^ x) != -1)
      17      link_error ();
      18  
      19    if ((x | ~x) != -1)
      20      link_error ();
      21    if ((~x | x) != -1)
      22      link_error ();
      23  
      24    if (x && !x)
      25      link_error ();
      26    if (!x && x)
      27      link_error ();
      28  
      29    if (!(x || !x))
      30      link_error ();
      31    if (!(!x || x))
      32      link_error ();
      33  }
      34  
      35  int main()
      36  {
      37    test (0);
      38    test (1);
      39    test (-1);
      40    return 0;
      41  }
      42