Comparison and evaluation of back-translation algorithms for static single assignment forms
The static single assignment form (SSA form) is a popular intermediate representation in compilers. In the SSA form, the definition of each variable textually appears only once in the program by using a hypothetical function called a phi-function. Because these functions are nonexecutable, it is necessary to delete the phi-functions and return the SSA form to the normal form before code generation. This conversion is called SSA back-translation. Two major algorithms exist for SSA back-translation. One by Briggs et al., the other by Sreedhar et al. To date, there has been almost no research that compares these SSA back-translation algorithms. In this paper, we clarify the merits and demerits of these algorithms. We also propose an improvement to Briggs' algorithm. We then compare the three methods through experiments using the SPEC benchmarks. Our experiments show that in most cases, Sreedhar's method is the more favorable. The efficiency of its object code is better than that from Briggs' method by a few percent in general, up to a maximum of 28%. The experiments have also clarified several characteristic features of these methods. (C) 2007 Elsevier Ltd. All rights reserved.
back-translation static single assignment form compiler intermediate language machine-independent program transformation