Fix an issue with compound assignment operators.

If the left arith type of a compound assignment had less bits than an int, an
arith type an assertion in usual_arith_conv was triggered. This was because the left
type was not promoted correctly.