1. A method for implementing architecture cloning in an analysis phase and in a transformation phase, the method comprising: constructing a program call graph in a beginning of a link phase of interprocedural analysis to model calling relationships between one or more procedures in a program; analyzing the program call graph via a compiler to obtain information about the program; analyzing the program to identify the one or more procedures subject to architecture cloning; marking the one or more procedures in the program suitable for architecture cloning upon a determination of feasibility of architecture cloning for the one or more procedures in the program; inserting a runtime routine call at an entry point of the program; traversing the program call graph from top-down to perform procedure cloning; naming the one or more procedures in the program suitable for architecture cloning; invoking architecture cloning when one or more candidate procedures are identified during procedure cloning; providing a user with an interface for specifying multiple architecture targets to the compiler; enabling the compiler to generate architectural specific instructions optimized for each of the multiple architecture targets; and executing appropriate instructions at runtime based on a running platform.