/* PR c/3444
   This used to fail because bitwise xor was improperly computed in char type
   and sign extended to int type.  */

extern void abort();
extern void exit(int);

signed char c = (signed char)0xffffffff;

int foo(void) {
    return (unsigned short)c ^ (signed char)0x99999999;
}

int main(void) {
    if ((unsigned char)-1 != 0xff || sizeof(short) != 2 || sizeof(int) != 4)
        exit(0);
    if (foo() != (int)0xffff0066)
        abort();
    exit(0);
}
