OPT_Instruction i = Move.create(moveOp, ALoad.getResult(inst), scalars[index]);
OPT_Instruction i = Move.create(moveOp, ALoad.getClearResult(inst), scalars[index].copyRO());
  private void scalarReplace (OPT_RegisterOperand use,       OPT_RegisterOperand[] scalars) {    OPT_Instruction inst = use.instruction;    VM_Type type = vmArray.getElementType();    OPT_Operator moveOp = OPT_IRTools.getMoveOp(type.getTypeRef());    switch (inst.getOpcode()) {      case INT_ALOAD_opcode:case LONG_ALOAD_opcode:case FLOAT_ALOAD_opcode:      case DOUBLE_ALOAD_opcode:case BYTE_ALOAD_opcode:case UBYTE_ALOAD_opcode:      case USHORT_ALOAD_opcode:case SHORT_ALOAD_opcode:case REF_ALOAD_opcode:        {          int index = ALoad.getIndex(inst).asIntConstant().value;          OPT_Instruction i = Move.create(moveOp, ALoad.getResult(inst),               scalars[index]);          inst.insertBefore(i);          OPT_DefUse.removeInstructionAndUpdateDU(inst);          OPT_DefUse.updateDUForNewInstruction(i);        }        break;      case INT_ASTORE_opcode:case LONG_ASTORE_opcode:case FLOAT_ASTORE_opcode:      case DOUBLE_ASTORE_opcode:case BYTE_ASTORE_opcode:case SHORT_ASTORE_opcode:      case REF_ASTORE_opcode:        {          int index = AStore.getIndex(inst).asIntConstant().value;          OPT_Instruction i2 = Move.create(moveOp, scalars[index],               AStore.getValue(inst));          inst.insertBefore(i2);          OPT_DefUse.removeInstructionAndUpdateDU(inst);          OPT_DefUse.updateDUForNewInstruction(i2);        }        break;      case BOUNDS_CHECK_opcode:        OPT_DefUse.removeInstructionAndUpdateDU(inst);        break;      default:        throw  new OPT_OptimizingCompilerException("Unexpected instruction: "            + inst);    }  }