3. Standard Construction and Destruction Algorithms
4. Advanced Construction Algorithms for SSA
5. SSA Reconstruction
6. Functional Representations of SSA
7. Introduction
8. Propagating Information using SSA
9. Liveness
10. Loop Tree and Induction Variables 11. Redundancy Elimination
12. Introduction
13. Static Single Information form
14. Graphs and Gating Functions
15. Psi-SSA Form
16. Hashed SSA form: HSSA
17. Array SSA Form
18. SSA Form and Code Generation
19. Instruction Code Selection
20. If-Conversion
21. SSA Destruction for Machine Code
22. Register Allocation
23. Hardware Compilation using SSA
24. Building SSA in a Compiler for PHP
Fabrice Rastello is an Inria research director and the leader of the CORSE (Compiler Optimization and Runtime SystEms) Inria team. His expertize includes automatic parallelization (PhD thesis on tiling as a loop transformations), and compiler back-end optimizations (engineer at STMicroelectronics’s compiler group + researcher at Inria). Among others, he advised several PhD thesis so as to fully revisit register allocation for JIT compilation in the light of Static Single Assignment (SSA) properties. He likes mixing theory (mostly graphs, algorithmic, and algebra) and practice (industrial transfer). His current research topics include: (i) combining run-time techniques with static compilation, hybrid compilation being an example of such approach he is trying to promote; (ii) performance debugging through static and dynamic (binary instrumentation) analysis; (iii) revisiting compilers infrastructure for pattern specific programs.
Florent Bouchez Tichadou received his Ph.D. in computer science in 2009 at the ENS Lyon in France, working on program compilation. He was then a post-doctoral fellow at the Indian Institute of Science (IISc) in Bangalore, India. He worked for three years at Kalray, a startup company in the Grenoble area in France. Since 2013, he is an assistant professor at the Université Grenoble Alpes (UGA).
This book provides readers with a single-source reference to static-single assignment (SSA)-based compiler design. It is the first (and up to now only) book that covers in a deep and comprehensive way how an optimizing compiler can be designed using the SSA form. After introducing vanilla SSA and its main properties, the authors describe several compiler analyses and optimizations under this form. They illustrate how compiler design can be made simpler and more efficient, thanks to the SSA form. This book also serves as a valuable text/reference for lecturers, making the teaching of compilers simpler and more effective. Coverage also includes advanced topics, such as code generation, aliasing, predication and more, making this book a valuable reference for advanced students and practicing engineers.
Provides the first, single-source reference to the widely adopted, static-single assignment (SSA) form of compiler design;
Includes contributions by subject experts from globally recognized compiler research centers and engineering practitioners at companies such as Google, Facebook, IBM, and Amazon;
Employs a textbook style of presentation throughout, with coherent and uniform structure, sequence, terminology, and notations;
Offers valuable content both for lecturers (such as vanilla SSA, construction, destruction, propagation, liveness) and advanced compiler developers (including if-conversion, code-selection, hardware compilation, scalar evolution, register allocation, Gated-SSA, Psi-SSA, Hashed-SSA, Array-SSA, SSI).