Compiler Potpourri
A potpourri of programs, scripts, and tools for a compilers course covering:
- Three-address code
- Basic blocks
- Control flow analysis
- Data flow analysis
- Static single assignment (SSA) form
- SSA-based analysis and optimizations
- Intro to LLVM IR
- Data dependences
- Loop transformations
- Parallel loops and tasks in OpenMP
- List scheduling
References
Books
- Engineering a Compiler
- Modern Compiler Implementation in ML
- Compilers: Principles, Techniques, and Tools
- High-Performance Compilers for Parallel Computing
- Optimizing Compilers for Modern Architectures
- SSA-based Compiler Design
Papers
- Compiler Transformations for High-Performance Computing
- Advanced Compiler Optimizations for Supercomputers
- A Catalogue of Optimizing Transformations
- A Simple, Fast Dominance Algorithm
- Iterative Data-Flow Analysis, Revisited
- SSA is Functional Programming
- Simple Generation of Static Single-Assignment Form
- Practical Improvements to the Construction and Destruction of Static Single Assignment Form
- Translating Out of Static Single Assignment Form
- Combining Analysis, Combining Optimizations
- From Quads to Graphs: An Intermediate Representation's Journey
- Intermediate Representations in Imperative Compilers: A Survey
- Value Numbering
- Constant Propagation with Conditional Branches
Articles
- Directed Graph Traversal, Orderings, and Applications to Data-Flow Analysis
- Understanding Static Single Assignment Forms
- A New Backend for Cranelift: Part 1, Part 2, Part 3
- Implementing a Toy Optimizer
- Search-based Compiler Code Generation
- E-Graphs and Equality Saturation
- Snapshot Testing for Compilers and Compiler-Like Things
- Critical Edge Splitting
- CPS Soup (A Functional Intermediate Language)
Courses
- Compiler Design (CMU): Fall 2014, Fall 2018, Fall 2020
- Compiler Design (KAIST): Spring 2020, Spring 2022
- Introduction to Compilers (Cornell): Spring 2020, Spring 2022
- Advanced Compilers (Cornell): Fall 2020, Spring 2022
- Static Program Analysis (UFMG): Spring 2020, Spring 2022