Abstract
The static single information (SSI) form is an extension of the static single assignment (SSA) form, a well-established compiler intermediate representation that has been successfully used for numerous compiler analysis and optimizations. Several interesting results have also been shown for SSI form concerning liveness analysis and the representation of live-ranges of variables, which could make SSI form appealing for just-in-time compilation. Unfortunately, we have uncovered several mistakes in the previous literature on SSI form, which, admittedly, is already quite sparse. This article corrects the mistakes that are most germane to SSI form. We first explain why the two definitions of SSI form proposed in past literature, first by C. S. Ananian, then by J. Singer, are not equivalent. Our main result is then to prove that basic blocks, and thus program points, can be totally ordered so that live-ranges of variables correspond to intervals on a line, a result that holds for both variants of SSI form. In other words, in SSI form, the intersection graph defined by live-ranges is an interval graph, a stronger structural property than for SSA form for which the intersection graph of live-ranges is chordal. Finally, we show how this structure of live-ranges can be used to simplify liveness analysis.
- Alpern, B., Wegman, M. N., and Zadeck, F. K. 1988. Detecting equality of variables in programs. In Proceedings of the 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’88). ACM, 1--11. Google Scholar
Digital Library
- Ananian, C. S. 1999. The static single information form. Tech. rep. MIT-LCS-TR-801, Laboratory for Computer Science, Massachusetts Institute of Technology.Google Scholar
- Appel, A. W. and Palsberg, J. 2002. Modern Compiler Implementation in Java 2nd Ed. Cambridge University Press. Google Scholar
Digital Library
- Boissinot, B., Darte, A., Dupont de Dinechin, B., Guillon, C., and Rastello, F. 2009. Revisiting out-of-SSA translation for correctness, code quality, and efficiency. In Proceedings of the International Symposium on Code Generation and Optimization (CGO’09). IEEE Computer Society Press, 114--125. Google Scholar
Digital Library
- Bouchez, F., Darte, A., Guillon, C., and Rastello, F. 2005. Register allocation and spill complexity under SSA. Tech. rep. RR2005-33, LIP, ENS Lyon, France.Google Scholar
- Bouchez, F., Darte, A., Guillon, C., and Rastello, F. 2006. Register allocation: What does the NP-completeness proof of Chaitin et al. really prove? In Proceedings of the 19th International Workshop on Languages and Compilers for Parallel Computing (LCPC’06). Lecture Notes in Computer Science, vol. 4382, Springer, 283--298. Google Scholar
Digital Library
- Briggs, P., D.Cooper, K., Harvey, T. J., and Simpson, L. T. 1998. Practical improvements to the construction and destruction of static single assignment form. Softw. Pract. Exper. 28, 8, 859--881. Google Scholar
Digital Library
- Brisk, P. and Sarrafzadeh, M. 2007. Interference graphs for procedures in static single information form are interval graphs. In Proceedings of the 10th International Workshop on Software & Compilers for Embedded Systems (SCOPES’’07). ACM Press, 101--110. Google Scholar
Digital Library
- Brisk, P., Dabiri, F., Jafari, R., and Sarrafzadeh, M. 2006. Optimal register sharing for high-level synthesis of SSA form programs. IEEE Trans. Comput.-Aid. Des. Integr. Circ. Syst. 25, 5, 772--779. Google Scholar
Digital Library
- Budimlić, Z., Cooper, K. D., Harvey, T. J., Kennedy, K., Oberg, T. S., and Reeves, S. W. 2002. Fast copy coalescing and live-range identification. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’02). ACM Press, 25--32. Google Scholar
Digital Library
- Chaitin, G. J. 1982. Register allocation and spilling via graph coloring. In Proceedings of the SIGPLAN Symposium on Compiler Construction. ACM, 98--105. Google Scholar
Digital Library
- Chaitin, G. J., Auslander, M. A., Chandra, A. K., Cocke, J., Hopkins, M. E., and Markstein, P. W. 1981. Register allocation via coloring. Comput. Lang. 6, 1, 47--57. Google Scholar
Digital Library
- Cooper, K. D. and Torczon, L. 2004. Engineering a Compiler. Morgan Kaufmann.Google Scholar
- Cytron, R., Ferrante, J., Rosen, B. K., Wegman, M. N., and Zadeck, F. K. 1991. Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst. 13, 4, 451--490. Google Scholar
Digital Library
- Golumbic, M. C. 2004. Algorithmic graph theory and perfect graphs. In Annals of Discrete Mathematics, vol. 57, North-Holland. Google Scholar
Digital Library
- Hack, S., Grund, D., and Goos, G. 2006. Register allocation for programs in SSA form. In Proceedings of the 15th International Conference on Compiler Construction. A. Zeller and A. Mycroft Eds., Lecture Notes in Computer Science, vol. 3923, Springer, 247--262. Google Scholar
Digital Library
- Havlak, P. 1997. Nesting of reducible and irreducible loops. ACM Trans. Program. Lang. Syst. 19, 4, 557--567. Google Scholar
Digital Library
- Johnson, R., Pearson, D., and Pingali, K. 1994. The program structure tree: Computing control regions in linear time. ACM SIGPLAN Not. 29, 6, 171--185. Google Scholar
Digital Library
- Pereira, F. M. Q. and Palsberg, J. 2005. Register allocation via coloring of chordal graphs. In Proceedings of the 3rd Asian Symposium on Programming Languages and Systems (APLAS’05). Lecture Notes in Computer Science, vol. 3780, Springer, 315--329. Google Scholar
Digital Library
- Poletto, M. and Sarkar, V. 1999. Linear scan register allocation. ACM Trans. Program. Lang. Syst. 21, 5, 895--913. Google Scholar
Digital Library
- Ramalingam, G. 2002. On loops, dominators, and dominance frontiers. ACM Trans. Program. Lang. Syst. 24, 5, 455--490. Google Scholar
Digital Library
- Rosen, B. K., Wegman, M. N., and Zadeck, F. K. 1988. Global value numbers and redundant computations. In Proceedings of the 5th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’88). ACM Press, 12--27. Google Scholar
Digital Library
- Singer, J. 2006. Static program analysis based on virtual register renaming. Tech. rep. UCAM-CL-TR-660, Computer Laboratory, University of Cambridge.Google Scholar
- Sreedhar, V. C., Gao, G. R., and Lee, Y.-F. 1996. Identifying loops using DJ graphs. ACM Trans. Program. Lang. Syst. 18, 6, 649--658. Google Scholar
Digital Library
- Sreedhar, V. C., Ju, R. D.-C., Gillies, D. M., and Santhanam, V. 1999. Translating out of static single assignment form. In Proceedings of the 6th International Symposium on Static Analysis (SAS’99). Springer, 194--210. Google Scholar
Digital Library
- Steensgaard, B. 1993. Sequentializing program dependence graphs for irreducible programs. Tech. rep. MSR-TR-93-14, Microsoft Research, Redmond, WA.Google Scholar
- Wegman, M. N. and Zadeck, F. K. 1991. Constant propagation with conditional branches. ACM Trans. Program. Lang. Syst. 13, 2, 181--210. Google Scholar
Digital Library
- Yannakakis, M. and Gavril, F. 1987. The maximum k-colorable subgraph problem for chordal graphs. Inf. Process. Lett. 24, 2, 133--137. Google Scholar
Digital Library
Index Terms
SSI Properties Revisited
Recommendations
SSA Translation Is an Abstract Interpretation
Static single assignment (SSA) form is a popular intermediate representation that helps implement useful static analyses, including global value numbering (GVN), sparse dataflow analyses, or SMT-based abstract interpretation or model checking. However,...
Cops, a fast robber and defensive domination on interval graphs
AbstractThe game of Cops and ∞-fast Robber is played by two players, one controlling c cops, the other one robber. The players alternate in turns: all the cops move at once to distance at most one each, the robber moves along any cop-free ...
Fast liveness checking for ssa-form programs
CGO '08: Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimizationLiveness analysis is an important analysis in optimizing compilers. Liveness information is used in several optimizations and is mandatory during the code-generation phase. Two drawbacks of conventional liveness analyses are that their computations are ...






Comments