Fix an issue with compound assignment operators.

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