1. A computer-implemented method executed by at least one processor for processing a plurality of instructions in a computer program, the method comprising the steps of: generating a control flow graph of the plurality of instructions in the computer program; generating a dominator tree corresponding to the control flow graph that indicates which blocks in the control flow graph dominate other blocks in the control flow graph; generating a candidate table of instructions in an order determined by the dominator tree, wherein for each instruction the candidate table comprises a base value and an index value; determining when a root candidate exists in the candidate table of instructions, wherein a root candidate is a candidate instruction that has no basis instruction and has at least one dependent, wherein a basis instruction is another candidate instruction in the candidate table of instructions which has the same base value; when a root candidate exists in the candidate table of instructions, selecting the root candidate in the candidate table of instructions; generating an increment table having a plurality of increments by processing the root candidate and related candidates in the candidate table of instructions, wherein a candidate's increment is the difference between its index and the index of its basis instruction; computing cost of each increment in the increment table; selecting an increment in the increment table; determining when the selected increment is profitable based on the computed cost; when the selected increment is profitable based on the computed cost: inserting an initializer for a temporary variable; substituting at least one alternative instruction that references the temporary variable for original instructions in the computer program; and removing instructions in the computer program that are unneeded due to the substituting in the preceding step.