/* Code commutative operators ('+', '*'). If first operand is a numeric constant, change order of operands to try to use an immediate or K operator.  */
static void codecommutative(FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2, int line)
/* Code commutative operators ('+', '*'). If first operand is a numeric constant, change order of operands to try to use an immediate or K operator.  */
static void codecommutative(FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2, int line)
{
  int flip = 0;
  if (tonumeral(e1, NULL)) {
    swapexps(e1, e2);
    flip = 1;
  }
  if (op == OPR_ADD && isSCint(e2))
    codebini(fs, cast(OpCode, OP_ADDI), e1, e2, flip, line, TM_ADD);
  else
    codearith(fs, op, e1, e2, flip, line);
}