if (split(r1,r2)) return false;   if (r1 == r2) return false;
  public static boolean attempt(OPT_IR ir, OPT_LiveAnalysis live,                                 OPT_Register r1, OPT_Register r2) {    // make sure r1 and r2 are not simultaneously live    if (isLiveAtDef(r2,r1,live)) return false;    if (isLiveAtDef(r1,r2,live)) return false;    // Liveness is OK.      // Update liveness information to reflect the merge.    live.merge(r1,r2);        // Merge the defs.    for (OPT_RegisterOperandEnumeration e = OPT_DefUse.defs(r2);         e.hasMoreElements(); ) {      OPT_RegisterOperand def= (OPT_RegisterOperand)e.nextElement();      OPT_DefUse.removeDef(def);      def.register = r1;      OPT_DefUse.recordDef(def);    }    // Merge the uses.    for (OPT_RegisterOperandEnumeration e = OPT_DefUse.uses(r2);         e.hasMoreElements(); ) {      OPT_RegisterOperand use = (OPT_RegisterOperand)e.nextElement();      OPT_DefUse.removeUse(use);      use.register = r1;      OPT_DefUse.recordUse(use);    }    return true;  }