Procedure cloning

Procedure cloning is an interprocedural optimization where the compiler creates specialized copies of procedure bodies. The authors examine the problem of procedure cloning and describe an experiment where cloning was required to make other transformations possible. They present a three-phase algorithm for deciding how to clone a program and analyze the algorithm's complexity. The algorithm finds potential improvements in forward interprocedural data-flow solutions and clones those procedures that lead to sharper information. A set of assumptions that bound both the running time of the algorithm and the expansion in code size is presented.<<ETX>>