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
foo(void)10 int foo (void)
11 {
12 return (unsigned short) c ^ (signed char) 0x99999999;
13 }
14
main(void)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 }
25