E0255 Compiler Design
Jan-Apr 2026, Tue-Thu (Fri backup), 10:00 A.M. --- 11:30 A.M., Room: CSA 112
Instructor: Uday
Kumar Reddy B
Grading
- Mid-term: 20% (17-Feb-2026, 10--11:30am)
- Asst-1: 25% (Due: 25-Feb-2026, 5 pm)
- Asst-2 (02-Apr-2026, 5 pm)
- End-term: 30% (exam week in Apr)
Topics
-
Introduction to Compilers
- Compilers: evolution
- Compilers in the 21st century - Intro
- Compiler Intermediate Representations (IRs)
-
Key structures for compiler analysis
- Basic blocks
- Control flow graph
- Dependence Graph
- Dominance, Dominators, Dominator tree, Dominance frontier, ...
-
Dataflow Analysis
- Introduction
- Forward dataflow analysis, Backward dataflow analysis
- Reaching definitions, Available expressions
-
SSA (Static Single Assignment)
-
Scalar Optimizations (traditional) using SSA and otherwise
-
Optimization and Parallelization
-
Characteristics of Modern Hardware/Architectures, Multicore
architectures, Accelerators (GPUs, FPGAs), Unconventional
parallel architectures
-
Memory Dependence Analysis
-
Loop Optimizations, Loop Transformations
-
Cache Locality Optimization
-
Parallelism, Loop Parallelization
-
Optimizations for caches, reuse, and parallelism
-
Vectorization
-
Other Program Transformations for Performance and Productivity
-
MLIR
- Introduction
- Basic concepts in MLIR and compiler IR design
- Core IR structures
- Affine abstractions in MLIR
-
Register Allocation
- Introduction
- Graph Coloring and Register Allocation
- Linear Scan
-
Modern Programming Languages, Domain-specific Languages
-
Challenges in Compiler Design in the 21st Century
Course Material and References
Additional Reading