Hide menu

DF00100 Advanced Compiler Construction

(PhD course, 6hp, spring 2023)

Give Ph.D. students or practitioners knowledge about advanced compiler technology, including program analysis, intermediate representations, compiler optimizations, code generation, compiler frameworks, run-time systems, and compilation techniques for parallel and embedded systems.

Basic course in compiler construction, corresponding to the undergraduate courses Compilers and Interpreters or Compiler Construction.
Basic course in data structures and algorithms.
Basic knowledge in processor architecture.

Contents and schedule

Lectures, lessons: 2 intensive weeks (mostly weeks 10 and 11/2023).
In spring 2023, the course will be given physically, but some moments (lectures, lessons) will also be transmitted on zoom for external participants. The student presentations and written exam will be on-site in Linköping.

Schedule frame for 2023:
- Lectures mostly in weeks 10 and 11 (7-17 March), see below for details.
- Student presentations 30 March 09:00-17:00, room Donald Knuth
- Written exam 27 April 09:00-13:00, room John von Neumann.

The preliminary schedule is given below. Slides are currently still as of 2021 and may be updated shortly before/after each lecture.

Date Time Location Topic (with links to slides (PS/PDF) where available) Lecturer
Week 10 - Focus on Program Analysis and High-Level Optimizations
Tuesday 07/3/2023 13:15-15:15 Knuth / Zoom Opening remarks (PDF, updated for 2023).
Introduction: Multi-level intermediate representations. Principles of code generation, stack organisation and call sequences, local common subexpression elimination, DAGs, lowering. Short introduction to SSA form. Survey of some compiler frameworks.
(PDF, updated for 2023)
Christoph Kessler
07/3/2023 15:30-17:00 Knuth / Zoom Introduction (cont.) /
Control flow analysis (PDF, changed to 1x1 format)
Christoph Kessler
Wednesday 08/3/2023 09:15-12:00 Knuth / Zoom Control flow analysis (cont.) /
Data flow analysis (PDF)
Christoph Kessler
Wednesday 08/3/2023 13:15-17:00 Knuth / Zoom Dependence analysis, loop transformations, loop parallelization (PDF, upd.) Christoph Kessler
Thursday 09/3/2023 11:00-12:00 Knuth / Zoom Lesson 1: Program representation, control and data flow analysis Christoph Kessler
09/3/2023 13:15-17:00 Knuth / Zoom Abstract interpretation. (PDF) Welf Löwe
Friday 10/3/2023 09:15-12:00 Knuth / Zoom Interprocedural Analysis. Points-to Analysis. (PDF) Welf Löwe
Week 12 - Focus on SSA, Low-level Optimizations and Code Generation
Monday 13/3/2023 09:15-10:15 John von Neumann

SaS seminar (not part of the course, but possibly of interest for some attendants):
Automated Graph Generation for the Assurance of Software-intensive Cyber-Physical Systems

Daniel Varro
Monday 13/3/2023 13:15-17:00 Knuth / Zoom

Instruction selection (PDF)

Register allocation (PDF)

Christoph Kessler
Tuesday 14/3/2023 09:15-12:00 Knuth / Zoom Instruction scheduling (PDF).
Side note: Space-optimal scheduling for trees (PDF, for self-study)
Christoph Kessler
14/3/2023 13:15-15:00 Knuth / Zoom Lesson 2: Dependence analysis and loop transformations Christoph Kessler
14/3/2023 15:15-17:00 Knuth / Zoom Software pipelining (PDF) Christoph Kessler
Wednesday 15/3/2023 09:15-11:00 Knuth / Zoom Software pipelining (cont.)
Auto-tuning (PDF)
Code generation for embedded processors, DSP processors, clustered VLIW architectures. (PDF, only partly covered).
Not lectured in 2023, for reference only:
Integrated code generation (PDF)
Compilation for actors and stream computing: task fusion, scheduling, mapping, DVFS (MP4 recorded lecture 25min, watch off-line)
Data transfer fusion optimization (PDF);
Christoph Kessler
15/3/2023 11:15-12:00 Knuth / Zoom Lesson 3: Instruction scheduling, software pipelining Christoph Kessler
15/3/2023 13:15-15:00 Knuth / Zoom Guest lecture: EMCA C Compiler, an LLVM based custom compiler at Ericsson Mattias Eriksson
15/3/2023 15:15-17:00 Knuth / Zoom Guest lecture: SkePU precompiler: Experiences with using the LLVM-clang compiler framework for source-to-source translation (PDF) August Ernstsson
Thursday 16/3/2023 09:15-11:00 Knuth / Zoom Guest lecture: The Open-source Modelica Compiler (PDF) Martin Sjölund
16/3/2023 11:15-12:00 Knuth / Zoom Assignment of papers for student presentations. Christoph Kessler
16/3/2023 13:15-17:00 von Neumann / Zoom SSA, construction and destruction, Memory SSA. SSA-based optimizations. (PDF, upd.) Welf Löwe
Friday 17/3/2023 09:15-12:00 Knuth / Zoom More SSA based optimizations; Chi functions in lazy memory SSA based analysis (PDF) Welf Löwe
Week 13:
30/3/2023 09:00-17:00 Donald Knuth Student presentations
Week 17:
27/4/2023 09:00-13:00 John von Neumann Written exam (TEN1) Christoph Kessler

Lectures, lessons, compiler framework programming labs, and student presentations of compiler research papers.

Lectures are, where possible, given in block format in 2 intensive weeks, usually 09:15-12:00 and 13:15-17:00 every day.

Lessons are problem solving sessions, discussing exercises to complement the lectures. The exercise sets are available here.

Lab series (3hp) using the LLVM compiler system. NO LABS IN 2023.

The presentation part of the course consists of student presentations of about 30 minutes each (25 minutes presentation plus 5 minutes questions) on a recent paper in compiler technology, with a written summary of 1-2 pages. It also includes opposition of one other presentation.
See this link for detailed instructions and the list of selected/assigned student papers.
For admission to the presentation it is required that at least 50% of the lectures and lessons have been attended.

Written/oral exam: Thursday 27/4/2023, 09:00-13:00, room: von Neumann.

No aids are allowed, except for a dictionary from English to your native language.
For admission to the exam it is required that at least 50% of the lectures and lessons have been attended.

Old exams:
Part 1 (PDF), Part 2 (PDF), Solution proposal part 2 (PDF)

You should be able to follow the course mainly based on the slide material only. The following books and papers are recommended as additional reading wherever necessary:


No textbook covers the entire course contents completely. But parts of either of the following books and articles can be useful as accompanying text for a major part of the course (these are also available in the local library):

  • Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman: Compilers: Principles, Techniques, and Tools. Second edition, Addison-Wesley, 2006.
    The course book of the undergraduate compiler course. If you already have it, use it.
  • Steven Muchnick: Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997. (Quite expensive, but recommended reading. The LiU TekNat library has 2 copies.)
    Errata for early printings
  • alternatively: Keith Cooper, Linda Torczon: Engineering a Compiler. Morgan Kaufmann, 2003.
  • Y.N. Srikant, P. Shankar (ed.): The compiler design handbook: optimizations and machine code generation, CRC Press, 2003.
    (Available in the LiU TekNat library, also the first edition..
    More complete and more up to date than Muchnick's book, but a collection of independent chapters rather than a monograph, and expensive.)
    In particular, chapters 5 (Optimizations for memory hierarchy), 7 (Energy-aware compiler optimizations), 11 (SSA form), 16 (ADLs for retargetable compiling), 17 (Instruction selection), 18 (DSP VLIW compiler), 19 (Instruction scheduling), 20 (Software pipelining). The first edition contains a chapter on dataflow analysis.
Papers: Further background reading:
  • Randy Allen, Ken Kennedy: Optimizing compilers for modern architectures. Morgan Kaufmann, 2002. (Covers e.g. dependence analysis, loop optimizations, cache optimizations, parallelization, interprocedural analysis and optimization.)
  • Michael Scott: Programming Language Pragmatics. Morgan Kaufmann, 2000. (Excellent summary of concepts in programming languages and their implementation in compilers. Chapter 13 gives a summary of code optimization.)
  • Joseph A. Fisher, Paolo Faraboschi, Cliff Young: Embedded Computing - A VLIW Approach to Architecture, Compilers, and Tools. Morgan Kaufmann, 2005.
    Available in the LiU TekNat library.
  • Peter Marwedel, Gert Goossens (Eds.): Code Generation for Embedded Processors. Kluwer International Series in Engineering and Computer Science, 1995.
  • Rainer Leupers: Retargetable Code Generation for Digital Signal Processors. Kluwer, 1997. (Available in Kvartersbibliotek B.)
  • Rainer Leupers: Code Optimization Techniques for Embedded Processors. Kluwer, 2000. (Available in Kvartersbibliotek B.)
  • Hennessy, Patterson: Computer Architecture, a Quantitative Approach, Third Edition. Morgan Kaufmann, 2003. (Chapter 4 gives an overview of compiler optimizations for ILP.)
For repetition of some foundations (course prerequisites) in graph-theory: Further resources: Teachers
Christoph Kessler (course leader)
Welf Löwe (guest lecturer)
Mattias Eriksson (guest lecturer)
August Ernstsson (guest lecturer)
Martin Sjölund (guest lecturer)

Christoph Kessler
Welf Löwe (guest examiner)


  • TEN1: Written or oral exam, 4.5hp (date see schedule).
    No aids are allowed.
    Admission to the exam requires formal registration and presence in at least 50% of all lectures and lessons.
    Passing the exam is mandatory for getting any credit points on the course.
  • PRE1: Paper presentation, opposition and written summary 1.5hp (Christoph) Deadline (summary): 6 April 2023
    For admission to the presentation it is required that at least 50% of the lectures and lessons have been attended.

Up to 6hp for the entire course, provided that the written exam is passed.
Admission to the examination moments (exam and presentation) requires formal registration on the course and presence in at least 50% of all lectures and lessons.

Note: Those who pass the course but are not IDA graduate students receive a paper certificate about their result. For potential acceptance of the certificate towards other graduate education programs please contact your program coordinator before joining the course.

This has been a CUGS Advanced Graduate Course 2002-2014.
The course is usually offered every other year.
It is not open to undergraduate students.

This page is maintained by Christoph Kessler

Page responsible: Webmaster
Last updated: 2023-03-17