Pre-requisites : CS346

Syllabus :
Introduction to code optimization, efficient code generation and parallelizing compilers. Data-flow analysis : Classical theory, bi-directional flows, unified algorithms etc. Efficient code generation: Algorithms, register allocation heuristics and automated tools. Parallelism detection : Data dependence, control dependence, various restructuring transformations on loops. Inter-procedural analysis : Constant propagation, data dependence etc. Selected case studies.

Texts :
1. S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997.
2. M. J. Wolfe, High Performance Compilers for Parallel Computing, Addison-Wesley, 1995.

References :
1. V. Sarkar, Partitioning and Scheduling Parallel Programs for Multiprocessors, MIT Press, 1989.
2. A. Aho, R. Sethi and J. D. Ullman, Compilers: Principles, Techniques and Tools, Addison Wesley, 1986.
3. Selected research papers.