1  /* PR c/3444
       2     This used to fail because bitwise xor was improperly computed in char type
       3     and sign extended to int type.  */
       4  
       5  extern void abort ();
       6  extern void exit (int);
       7  
       8  signed char c = (signed char) 0xffffffff;
       9  
      10  int foo (void)
      11  {
      12    return (unsigned short) c ^ (signed char) 0x99999999;
      13  }
      14  
      15  int main (void)
      16  {
      17    if ((unsigned char) -1 != 0xff
      18        || sizeof (short) != 2
      19        || sizeof (int) != 4)
      20      exit (0);
      21    if (foo () != (int) 0xffff0066)
      22      abort ();
      23    exit (0);
      24  }