insertCopies(c, dom, live, s);
insertCopies(c, dom, live);
  private void insertCopies (OPT_BasicBlock bb, OPT_DominatorTree dom,       OPT_LiveAnalysis live, VariableStacks s) {    // substitute variables renamed in control parents    OPT_InstructionEnumeration e = bb.forwardRealInstrEnumerator();    while (e.hasMoreElements()) {      OPT_Instruction i = e.next();      OPT_OperandEnumeration ee = i.getOperands();      while (ee.hasMoreElements()) {        OPT_Operand o = ee.next();        if (o instanceof OPT_RegisterOperand) {          OPT_Register r1 = ((OPT_RegisterOperand)o).register;	  if (r1.isValidation()) continue;          OPT_Operand r2 = s.peek(r1);          if (r2 != null)            i.replaceOperand(o, r2);        }      }    }    // add copies required in this block to remove phis,    // recording needed renamings in s and pushed    java.util.Set pushed = scheduleCopies(bb, live, s);    // insert copies in control children    Enumeration children = dom.getChildren(bb);    while (children.hasMoreElements()) {      OPT_BasicBlock c = ((OPT_DominatorTreeNode)children.nextElement()).          getBlock();      insertCopies(c, dom, live, s);    }    // pop renamings from this block off stack    java.util.Iterator p = pushed.iterator();    while (p.hasNext())      s.pop((OPT_Register)p.next());  }