Study Guide@lith   Link to LiU Homepage

Linköping Institute of Technology

Link to LiU Homepage
Valid for year : 2011
TDDC86 Compiler Optimizations and Code Generation, 6 ECTS credits.
/Kompilatoroptimeringar och kodgenerering/



The course is canelled 2011


Prel. scheduled hours:
Rec. self-study hours: 160

  Area of Education: Technology

Main field of studies: Computer Engineering

  Advancement level (G1, G2, A): A

In this course, we consider more advanced issues in compiler technology, with a focus on program analysis, optimization, and back-end issues. After the course, the student will
  • understand the theory of dependence analysis, control and data flow analysis;
  • know concepts and significance of advanced intermediate representations in modern compilers, including SSA form;
  • know the conditions for applicability and the performance improvement potential of important optimizing transformations in compilers;
  • know the main problems and compiler techniques for generating code for modern computer architectures, including embedded processors, DSP processors and high-performance computing architectures.

Prerequisites: (valid for students admitted to programmes within which the course is offered)
Data structures and algorithms; Compilers and interpreters or Compiler construction, Computer architecture

Note: Admission requirements for non-programme students usually also include admission requirements for the programme and threshhold requirements for progression within the programme, or corresponding.

The lectures introduce the theory and are complemented by lessons with exercises. The project is done in small groups. The project task consists either of an experimental self-study of a modern compiler framework or of a critical review of a recent conference paper or journal article in compiler technology. The project results are to be presented both by oral presentations and by a written summary paper. The course therefore concludes with a simulated compiler workshop where the project results are presented for all participants.

Course contents:
Design of intermediate representations. Control flow analysis. Data flow analysis. Common subexpression elimination. Interprocedural analysis. Dependence analysis. Loop transformations. Loop parallelization. Static single assignment form. Instruction selection. Local and global instruction scheduling. Register allocation. Phase ordering problems and integrated code generation. Software pipelining. Code generation for embedded systems. Code generation for parallel systems. Just-in-time (JIT) compilation. Compiling object-oriented programming languages. Exception handling. Garbage collection.

Course literature:
Aho, Lam, Sethi, Ullman: Compilers Principles, Techniques, and Tools, Second Edition. Addison-Wesley, to appear 2006/2007.
or one of the following books:
Aho, Sethi, Ullman: Compilers Principles, Techniques, and Tools, Addison-Wesley, 1986. Chapter 10.
Muchnick: Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997.
Cooper, Torczon: Engineering a compiler. Morgan Kaufmann, 2004.
Further literature references will be given on the course home page.

Written examination
Project work with oral presentation and written summary paper
The questions in the written exam check how well the student has fulfilled the learning goals of the theory part of the course. For passing the exam, deficits in fulfilling certain partial goals can be balanced by a better fulfilling of other partial goals.

Course language is English.
Department offering the course: IDA.
Director of Studies:
Examiner: Christoph Kessler
Link to the course homepage at the department

Linköping Institute of Technology

Link to top of pagep

Contact: TFK ,
Last updated: 11/16/2010