return REDUCED;
return DefUseEffect.REDUCED;
  private static byte refSub(OPT_Instruction s) {   if (CF_ADDR) {      OPT_Operand op1 = Binary.getVal1(s);      OPT_Operand op2 = Binary.getVal2(s);      if (op1.similar(op2)) {        // THE SAME OPERAND: x - x == 0        Move.mutate(s, REF_MOVE, Binary.getClearResult(s),                     IC(0));        return MOVE_FOLDED;      }      if (op2.isConstant() && !op2.isObjectConstant()) {        Address val2 = getAddressValue(op2);        if (op1.isConstant() && !op1.isObjectConstant()) {          // BOTH CONSTANTS: FOLD          Address val1 = getAddressValue(op1);          Move.mutate(s, REF_MOVE, Binary.getClearResult(s), AC(val1.minus(val2.toWord().toOffset())));          return MOVE_FOLDED;        } else {          // ONLY OP2 IS CONSTANT: ATTEMPT TO APPLY AXIOMS          if (val2.isZero()) {                 // x - 0 == x            if (op1.isIntLike()) {              Unary.mutate(s, INT_2ADDRSigExt, Binary.getClearResult(s), Binary.getClearVal1(s));            } else {              Move.mutate(s, REF_MOVE, Binary.getClearResult(s), Binary.getClearVal1(s));            }            return MOVE_REDUCED;          }          // x - c = x + -c          // prefer adds, since some architectures have addi but not subi          Binary.mutate(s, REF_ADD, Binary.getClearResult(s),                         Binary.getClearVal1(s), AC(Address.zero().minus(val2.toWord().toOffset())));          return REDUCED;        }      }    }    return UNCHANGED;  }