Abstract
Code generators for optimizing compilers benefit from a program SSA form for the analyses and transformations of machine code between instruction selection and register allocation. However, the usual features of machine code, such as register naming constraints of variables, or instructions that partially write their destination operands, make the maintenance of SSA form challenging. We discuss some of the issues of engineering a SSA form in a compiler code generator, and more specifically the challenges of maintaining the SSA form on a program representation based on machine instructions; how the SSA form may be used in the if-conversion optimizations; whether the SSA form benefits prepass instruction scheduling; and which approaches to SSA form destruction may apply to machine code.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
The predicate used to guard an operation is promoted to a weaker condition.
References
Allen, J. R., et al. (1983). Conversion of control dependence to data dependence. In Proceedings of the Symposium on Principles of Programming Languages. POPL ’83 (pp. 177–189).
Boissinot, B., et al. (2008). Fast liveness checking for SSA-form programs. In Proceedings of the International Symposium on Code Generation and Optimization. CGO ’08 (pp. 35–44).
Boissinot, B., et al. (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 (pp. 114–125).
Boissinot, B., et al. (2011). A non-iterative data-flow algorithm for computing liveness sets in strict SSA programs. In Asian Symposium on Programming Languages and Systems. APLAS ’11 (pp. 137–154).
Chan, S., et al. (2008). Open64 compiler infrastructure for emerging multicore/manycore architecture. Tutorial at the International Symposium on Parallel and Distributed Processing. SPDP ’08.
Chapman, B., Eachempati, D., & Hernandez, O. (2013). Experiences developing the OpenUH compiler and runtime infrastructure. International Journal of Parallel Programming, 41(6), 825–854.
de Dinechin, B. D. (2007). Time-indexed formulations and a large neighborhood search for the resource-constrained modulo scheduling problem. In Multidisciplinary International Scheduling Conference: Theory and Applications. MISTA.
de Dinechin, B. D. (2008). Inter-block scoreboard scheduling in a JIT compiler for VLIW processors. In European Conference on Parallel Processing (pp. 370–381).
de Dinechin, B. D., et al. (2000). Code generator optimizations for the ST120 DSP-MCU core. In Proceedings of the International Conference on Compilers, Architecture, and Synthesis for Embedded Systems. CASES ’00 (pp. 93–102).
de Dinechin, B. D., et al. (2000). DSP-MCU processor optimization for portable applications. Microelectronic Engineering, 54(1–2), 123–132.
Faraboschi, P., et al. (2000). Lx: A technology platform for customizable VLIW embedded processing. SIGARCH Computer Architecture News, 28(2), 203–213.
Park, J. C. H., & Schlansker, M. S. (1991). On Predicated Execution. Technical Report HPL-91-58. Hewlett Packard Laboratories.
Rastello, F., de Ferrière, F., & Guillon, C. (2004). Optimizing translation out of SSA using renaming constraints. In Proceedings of the International Symposium on Code Generation and Optimization. CGO ’04 (pp. 265–278).
Sreedhar, V. C., et al. (1999). Translating out of static single assignment form. In International Static Analysis Symposium. SAS ’99 (pp. 194–210).
Stoutchinin, A., & de Ferrière, F. (2001). Efficient static single assignment form for predication. In Proceedings of the International Symposium on Microarchitecture. MICRO 34 (pp. 172–181).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this chapter
Cite this chapter
Dupont de Dinechin, B. (2022). SSA Form and Code Generation. In: Rastello, F., Bouchez Tichadou, F. (eds) SSA-based Compiler Design. Springer, Cham. https://doi.org/10.1007/978-3-030-80515-9_18
Download citation
DOI: https://doi.org/10.1007/978-3-030-80515-9_18
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-80514-2
Online ISBN: 978-3-030-80515-9
eBook Packages: Computer ScienceComputer Science (R0)