// Expect 10 errors (one per function)

float x;

void shr_eq() { x >>= 1; }
void shl_eq() { x <<= 1; }
void and_eq() { x &=  1; }
void or_eq()  { x |=  1; }
void xor_eq() { x ^=  1; }

void shr() { x = x >> 1; }
void shl() { x = x << 1; }
void and() { x = x & 1; }
void or()  { x = x | 1; }
void xor() { x = x ^ 1; }
