1. A computer implemented method for optimizing in a source program that executes on a computer, comprising: representing the source program having at least one loop, and at least one instruction having at least one variable, by a graph including a plurality of nodes, each node including at least one of the instructions, having the following steps: a. including a definition instruction, that establishes at least one original name variable, at least one cloned name variable, or at least one incarnation name variable; b. including a use instruction that includes use of the original name, use of the cloned name, or use of the incarnation name; c. maintaining correspondence between the cloned name and the original name; d. including a set of at least one first instruction that identifies nodes having the definition instructions and the identified nodes are inside of the loop; e. including a set of at least one second instruction that identifies nodes having the use instructions and the identified nodes being outside of the loop; f. including a set of at least one tail node; g. including a set of at least one third instruction having the original names that are in both the first instruction set and the second instruction set; h. wherein, for each tail node in the set of tail nodes: i. wherein, when the original name is in the tail node and the third instruction set, inserting in the tail node a cloned definition instruction that establishes the cloned name by the correspondence to the original name; and ii. wherein, for all the use instructions that are also in the second instruction set, when the original name is used, and when the cloned name is established in the cloned definition instruction, replacing the original name with the corresponding cloned name; and i. generating an executable module from the graph that executes on the computer thereby optimizing the source program that executes on the computer with the cloned name.