Note: Whether the course will be given in 2026 or not depends in particular on the number of course registrations (from LiU PhD students). We expect a decision by the IDA graduate education board by early 2026.
Goals
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.
Prerequisites
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.
For the labs: Programming in C++/Linux.
Contents and schedule
Lectures, lessons, lab introduction:
2 intensive weeks (mostly in september 2026) in Linköping.
The course will be given on-site, but some moments
(lectures, lessons) may also be transmitted on zoom for external participants.
The student presentations and exam will be on-site in Linköping.
The preliminary schedule is given below. Slides are currently still as of 2023 and may be updated shortly before/after each lecture.
SaS seminar
(not part of the course, but possibly of interest for some attendants): Instruction selection (PDF) Register allocation (PDF)
Date Time Location
Topic (with links to slides (PS/PDF) where available) Lecturer
Week 37 - Focus on Program Analysis and High-Level Optimizations
Tuesday 09/09/2025
13:15-15:00
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
09/9/2025 16:00-17:00 Knuth / Zoom
Control flow analysis (PDF, changed to 1x1 format)
Christoph Kessler
10/9/2025 09:15-10:00 Zoom
Lab introduction:
LLVM Compiler Framework.
Lab part 1,
Lab part 2
TBA
Wednesday 10/9/2025 10:15-12:00 Knuth / Zoom
Control flow analysis (cont.) /
Data flow analysis (PDF)
Christoph Kessler
Wednesday 10/9/2025 13:15-17:00 Knuth / Zoom
Dependence analysis, loop transformations, loop parallelization
(PDF, upd.)
Christoph Kessler
Thursday 11/9/2025 11:00-12:00 Knuth / Zoom
Lesson 1: Program representation, control and data flow analysis
Christoph Kessler
11/9/2025 13:15-17:00 Knuth / Zoom
Abstract interpretation.
(PDF)
Welf Löwe
Friday 12/9/2025 09:15-12:00 Knuth / Zoom
Interprocedural Analysis. Points-to Analysis.
(PDF)
Welf Löwe
Week 38 - Focus on SSA, Low-level Optimizations and Code Generation
Monday 15/9/2025 09:15-10:15 John von Neumann
Automated Graph Generation for the Assurance of Software-intensive Cyber-Physical Systems
Daniel Varro
Monday 15/9/2023 13:15-17:00 Knuth / Zoom
Christoph Kessler
Tuesday 16/9/2025 09:15-12:00 Knuth / Zoom
Instruction scheduling (PDF).
Side note: Space-optimal scheduling for trees (PDF, for self-study)Christoph Kessler
16/9/2025 13:15-15:00
Knuth / Zoom
Lesson 2: Dependence analysis and loop transformations
Christoph Kessler
16/9/2025 15:15-17:00 Knuth / Zoom
Software pipelining (PDF)
Christoph Kessler
Wednesday 17/9/2025 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
17/9/2025 11:15-12:00 Knuth / Zoom
Lesson 3: Instruction scheduling, software pipelining
Christoph Kessler
17/9/2025 13:15-15:00 Knuth / Zoom
Guest lecture: EMCA C Compiler, an LLVM based custom compiler at Ericsson
Mattias Eriksson
17/9/2025 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 18/9/2025 09:15-11:00 Knuth / Zoom
Guest lecture: The Open-source Modelica Compiler
(PDF)
Martin Sjölund
18/9/2025 11:15-12:00 Knuth / Zoom
Assignment of papers for student presentations.
Christoph Kessler
18/9/2025 13:15-17:00 von Neumann / Zoom
SSA, construction and destruction, Memory SSA. SSA-based optimizations.
(PDF, upd.)
Welf Löwe
Friday 19/9/2025 09:15-12:00 Knuth / Zoom
More SSA based optimizations;
Chi functions in lazy memory SSA based analysis
(PDF)
Welf Löwe
Week TBA:
TBA 09:00-17:00 Donald Knuth
Student presentations
Week TBA:
TBA 09:00-13:00
John von Neumann
Written exam (TEN1)
Christoph Kessler
Organization
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.
Lab introduction (2021)
Lab instructions, part 1 (2021)
Lab instructions, part 2 (2021).
The lab assistant
will supervise labs and correct lab reports.
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)
Literature
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:
Books:
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):
Examiner
Christoph Kessler
Welf Löwe (guest examiner)
Examination
Credit
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.
Comments
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.